通过ListView更改标签文本ItemActivate
我有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();
}
这里是你应该做的!关于你的第二形式,做到这一点
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();
通过这样做,您可以传递信息形式来形式来回。我随时随地用我的每一个表格。这非常有用!如果您有任何问题,请告诉我!
这工作!我不是100%确定这是为什么会起作用,因为我来自Python和Java,但是我觉得我已经开始掌握它了。 C-land是一个疯狂的地方。感谢Landon!你是真正的MVP。 –
没问题!这只是我通常的做事方式!而且我认为我会把它传递给更多像你一样有问题的人!除非有特定的原因,否则我绝不会创建一个没有这样做的表单! –
您是否注意到您创建了* new * MainForm?这不是你现在在屏幕上的那个。 – LarsTech
我如何参考我的主窗体?当我尝试时,我无法。请参阅我的新编辑 –
可能在您的主窗体侦听的第二个窗体上创建事件,并在您拥有的lisView1_ItemActivate方法中引发自定义事件并传递值。 – LarsTech