【发布时间】:2015-07-05 07:06:14
【问题描述】:
在我的应用程序中,我有两种形式(见下图)。单击“添加”按钮会显示第二个“添加无线网络”表单。
填写表格并单击“确定”后,第二个表格会添加新配置文件并更新第一个表格中的 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() 调用之后。
标签: c# forms arguments controls