在我的应用程序中,我有两种形式(见下图)。点击“添加”按钮显示第二个“添加无线网络”表单。从Form2访问Form1控件
填写表格,然后点击“确定”后,第二种形式添加了新的配置文件,并更新了第一种形式的WiFi网络配置文件。有一个在第一形式的RefreshProfiles
功能,我用这个称呼它的第二种形式:
((MainForm)this.Owner).RefreshWiFiProfiles();
和“添加”按钮的代码是这样的:
private void AddButton_Click(object sender, EventArgs e)
{
NewNetworkForm newNetworkForm = new NewNetworkForm();
newNetworkForm.Owner = this;
newNetworkForm.ShowDialog();
}
这种设置工作正常,但是由于随着我添加新的东西而增加的行数增加,我想分割代码。所以我创建了一个包含一些函数的类。
namespace WirelessNetworkManager
{
public class Tools
{
public static void RefreshWiFiProfiles(ListView ListViewControl)
{
// clear old list
ListViewControl.Items.Clear();
// update it
}
}
}
我所说的第一种形式的方法与此:
Tools.RefreshWiFiProfiles(ProfilesListView);
和它的正常工作。问题是,因为我需要从第二个表单更新配置文件列表,所以我需要在NewNetworkForm
中调用它。我可以访问并通过MainForm
中的ProfilesListView
,因为它在那里。如何将MainForm
中的控件传递给NewNetworkForm
中的方法并对其进行修改?还是有更好的方法来做到这一点?
文件结构
- MainForm.cs(WirelessNetworkManager.MainForm)
- NewNetworkForm.cs(WirelessNetworkManager.NewNetworkForm)
- Tools.cs(WirelessNetworkManager.Tools)
更好的方法是让ManagerTools处理中性数据而不处理控件。简短的解决方案是将此逻辑移至ShowDialog()调用之后。 –