我正在开发一个 WinForm 应用程序,到目前为止,我在管理大小和内容方面做得很糟糕。我希望有人能给我一个例子,说明如何打破我在主表单 cs 文件中的一些逻辑。
这是我在 MainWindow.cs 中的 EventHandler 函数的示例:
private void GroupBoxRequestTypeCheckedChanged(object pSender, EventArgs pEventArgs)
{
RadioButton vRadioButton = pSender as RadioButton;
if (vRadioButton != null)
{
this.fSelectedButton = vRadioButton.Checked ? vRadioButton : null;
if (vRadioButton.Equals(this.RadioButton_Copy) || vRadioButton.Equals(this.RadioButton_Delete) || vRadioButton.Equals(this.RadioButton_Download)
|| vRadioButton.Equals(this.RadioButton_Move) || vRadioButton.Equals(this.RadioButton_Upload))
{
this.GroupBox_Files.Enabled = true;
this.GroupBox_Variables.Enabled = false;
}
else
{
this.GroupBox_Files.Enabled = false;
this.GroupBox_Variables.Enabled = true;
}
if (this.fSelectedButton != null)
{
if (this.fSelectedButton.Equals(this.RadioButton_Delete))
{
this.TextBox_DestinationFile.Enabled = false;
this.Button_DestinationBrowse.Enabled = false;
}
else
{
this.TextBox_DestinationFile.Enabled = true;
this.Button_DestinationBrowse.Enabled = true;
}
}
}
}
所以这只是我在表单中拥有的众多 EventHandler 之一。我创建了一个 MainForm,它有一个选项卡式窗格,并且有一个选项卡集合,每个选项卡中都有按钮、文本框、复选框等。我处理的所有事件都进入 MainForm.cs 文件,现在这个文件中有近 1,000 行。
有人可以给我一个简单的例子(或文章/文档)详细说明良好的结构吗?我可以在一个单独的类中定义我的 EventHandler 函数吗(如果是这样,这将如何工作......)我是否创建某种静态 Helper 类,我只需传递我需要操作的对象的实例?IE
private void GroupBoxRequestTypeCheckedChange(object pSender, EventArgs pEventArgs)
{
HelperClass.HandleGroupBoxRequestTypeCheckedChanged(pSender, pEventArgs, this);
}
'this' 是表单本身,它包含对我需要操作的对象的所有引用?
可能值得注意的是,我已经对跨线程调用有了一些了解,并且我已经开始为许多我需要的简单实例制作扩展方法。
另一个问题 - 我注意到可视化设计器默认情况下会自动将使用它创建的所有组件设为私有,将这些组件设置为内部组件并使用表单对象根据需要从类外部引用这些组件通常是个坏主意吗?如果这不是一个好主意,还有什么更好的方法?