我目前正在重构一个大型应用程序。
有大量的Windows窗体,它们都从一个基本窗体继承。我无法调试使用Application.Run()运行第一个表单后发生的任何事情。
由于代码很乱,我在调试UI时不能轻易遵循流程,并且不知道我在查看哪种形式。
我有太多的表单为每个人手动创建一个方法,所以我想要做的是在父类中创建一个由每个人调用的方法。例如,此方法可以将表单名称打印到控制台。通过这种方式,我可以在源代码中创建一些文件夹结构,具体取决于何处。
有关使用Resharper和/或Visual Studio如何做到这一点的任何建议?
非常感谢任何输入!
答案 0 :(得分:1)
如果您没有覆盖OnShown
方法,可以将其放在基本表单中,如下所示:
public /*abstract*/ class BaseForm : Form
{
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
Console.WriteLine($"Entered {this.GetType().Name}");
}
}
当显示任何表单时将自动调用它,并使用Reflection将类的名称打印到控制台。
答案 1 :(得分:0)
据我了解并如您所说,如果所有表单都从基本表单继承,则它们都具有相同的组件。所以你可以创建一个像bellow这样的模块并放置这个基本形式的方法。
'This Module you will put all methods from the base form
Module ProcAuxiliar
Public Sub BaseForm_Sum (ByVal Textbox1 As String, ByVal Textbox2 As String)
Dim Val1 As Int32 = Convert.ToInt32(Textbox1)
Dim Val2 As Int32 = Convert.ToInt32(Textbox2)
MsgBox( Convert.ToString(Val1 + Val2)
End Sub
Public Sub BaseForm_decrease (ByVal Textbox1 As String, ByVal Textbox2 As String)
Dim Val1 As Int32 = Convert.ToInt32(Textbox1)
Dim Val2 As Int32 = Convert.ToInt32(Textbox2)
MsgBox( Convert.ToString(Val1 - Val2)
End Sub
End Module
在Child Form中只需从模块中调用方法
'Child Form 1
Sub BtSumClick(ByVal sender As Object, ByVal e As EventArgs) Handles btSum.Click
ProcAuxiliar.BaseForm_Sum(Textbox1.Text, Textbox2.Text)
End Sub
'Child Form 2
Sub BtDecreaseClick(ByVal sender As Object, ByVal e As EventArgs) Handles BtDecrease.Click
ProcAuxiliar.BaseForm_decrease(Textbox1.Text, Textbox2.Text)
End Sub
在子节点中重写baseform的方法并使用更多代码调用baseform方法:
protected override sub Children_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyBase.Children_Load(sender, e)
MyBase.BaseForm_Load(sender, e)
End Sub