两个子窗口Form1和Form2,用一个委托方法(不用事件)来操作Form2中的ListBox控件。代码实现
时间: 2024-02-20 11:01:20 浏览: 32
首先,在Form2中定义一个委托方法,该方法接受一个string类型的参数,用于向ListBox中添加项:
```csharp
public void AddItemToListBox(string item)
{
listBox1.Items.Add(item);
}
```
然后,在Form1中创建一个委托变量,类型为上面定义的委托类型:
```csharp
private delegate void AddItemToListBoxDelegate(string item);
private AddItemToListBoxDelegate addItemToListBox;
```
接着,在Form1的构造函数中,实例化该委托变量,将其指向Form2中的AddItemToListBox方法:
```csharp
public Form1()
{
InitializeComponent();
Form2 form2 = new Form2();
addItemToListBox = new AddItemToListBoxDelegate(form2.AddItemToListBox);
}
```
最后,在Form1中调用委托方法,可以通过Invoke方法来实现跨线程访问控件:
```csharp
private void button1_Click(object sender, EventArgs e)
{
addItemToListBox.Invoke("Hello World!");
}
```
这样,当在Form1中点击button1时,就会调用Form2中的AddItemToListBox方法,向ListBox中添加一个"Hello World!"的项。