2016-12-06 2 views
1

У меня есть 2 формы: основная форма и вторая форма с только списком, в котором пользователи могут сделать выбор. Когда элемент списка активируется двойным щелчком, я хочу, чтобы метка в основной форме отображала текст элемента, который был активирован. Вот мой код (не работает); почему это неправильно? БлагодаряИзменить текст метки через ListView ItemActivate

Главная форма:

public partial class MainForm : Form 
{ 
    public MainForm() 
    { 
     InitializeComponent(); 
    } 

    /* for populating the process list when the user clicks display process button */ 
    private void DisplayProcessButton_Click(object sender, EventArgs e) 
    { 
     Process_List plopen = new Process_List(); 
     plopen.Show(); 

     Process[] process = Process.GetProcesses(); 
     foreach (Process prs in process) 
     { 
      plopen.listView1.Items.Add(prs.ProcessName); 
     } 
    } 

Вторая форма:

private void listView1_ItemActivate(object sender, EventArgs e) 
{ 
    MainForm mf = new MainForm(); 
    mf.label1.Text = e.ToString(); 
    Close(); 
} 
+0

Вы заметили, что создали * новый * MainForm? Теперь это не тот, который у вас есть на экране. – LarsTech

+0

Как я могу ссылаться на свою основную форму? Когда я пытаюсь, я не могу. Пожалуйста, см. Мое новое редактирование. –

+0

Вероятно, сделайте событие во второй форме, которую прослушает ваша основная форма, и в этом методе lisView1_ItemActivate вы поднимите свое пользовательское событие, передайте значение. – LarsTech

ответ

0

Вот что вы должны делать! На вашей второй форме, сделать это

public MainForm parentForm; 
public void SecondForm(MainForm form) 
{ 
    InitializeComponent(); 
    parentForm = form; 
} 

И ...

private void listView1_ItemActivate(object sender, EventArgs e) 
{ 
    parentForm.label1.Text = e.ToString(); 
} 

Затем в основной форме ...

public SecondForm secondform; 
public void MainForm() 
{ 
    InitializeComponent(); 
    secondform = new SecondForm(this); 
} 

И когда вы открываете ваш SecondForm использовать это везде, где вам хотеть!

secondform.Show(); 

Посредством этого вы можете передавать форму формы для форматирования взад и вперед. Я использую это все время с каждой моей формой. Это очень полезно! Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать!

+0

Это сработало! Я не уверен на 100%, почему это работает, поскольку я исхожу из Python и Java, однако я чувствую, что я начинаю понимать это. Земля C - сумасшедшее место. Спасибо, Лэндон! Вы настоящий MVP. –

+0

Нет проблем! Это всего лишь мой обычный способ делать что-то! И я подумал, что передам его другим людям вроде тебя, у кого проблемы с этим! Я никогда не создаю форму без этого, если нет конкретной причины! –

Смежные вопросы