我是 C# 新手,希望允许 Windows 表单相互通信。我用谷歌搜索了 C# 中的冒泡,但没有多大帮助。有什么好方法可以学习冒泡?
编辑:我希望在我的用户单击编辑->首选项时显示/创建一个选项表单。然后,我希望将用户在选项表单中更改的设置转发到主表单。
我是 C# 新手,希望允许 Windows 表单相互通信。我用谷歌搜索了 C# 中的冒泡,但没有多大帮助。有什么好方法可以学习冒泡?
编辑:我希望在我的用户单击编辑->首选项时显示/创建一个选项表单。然后,我希望将用户在选项表单中更改的设置转发到主表单。
两种方法:
将属性放在您的首选项表单上,并在用户单击“确定”时从主表单访问它们。
if (preferenceForm.ShowDialog() == DialogResult.OK)
{
this.Color = preferenceForm.UserSelectedColor;
//etc...
}
从主表单向您的偏好表单发送一个委托,并让偏好表单通过适当的更改调用它。
class FormSettings
{
object Color {get, set}
}
class MainForm
{
...
void ChangeSettings(FormSettings newSettings)
{ ... }
void EditPreferences_Click(...)
{
...
EditPreferencesForm editPreferences = new EditPreferencesForm(this.ChangeSettings)
editPreferences.ShowDialog();
}
}
class EditPreferencesForm
{
...
ChangeSettingsDelegate changeSettings;
FormSettings formSettings;
void OkButton_Click(...)
{
changeSettings(formSettings);
}
}
您没有说太多,但是主表单也是包含 Edit->Preferences 菜单的表单吗?如果是这样,您已经在代码中的正确位置
// This is the event handler in the main form
private void mnuEditPreferencesClicked...
{
FrmPreferences frmPreferences = new FrmPreferences();
frmPreferences.ShowDialog(this);
// Preferences saved, implement changes to main form here
}
如果首选项表单不是从主表单生成的,则在首选项表单关闭时触发一个事件,并让主表单以这种方式处理该事件。