使用 class 定义 winForm 的名称? C#
Define name of winForm that using the class? C#
我正在用 C# 开发一个包含 20 个 winforms 的项目。这些表单使用名为“databaseOperations”的comman class。
我的问题是如何定义使用此 class 中的方法的 winform 名称(发件人)。我想做下面类似的事情;
public class databaseOperations
{
public void loadfile(string path)
{
//if (sender form.name== "FormA")
{// codes...........;}
//else if (sender form.name== "FormB")
{// codes...........;}
}
}
我想获取winform的名字
提前致谢,
标准模式是定义这个方法:
public void LoadFile(Form sender, string path)
我们这样称呼:
var dbOps = new DatabaseOperations();
dbOps.LoadFile(myForm or this, "pathToFile");
因此现在我们可以这样检查:
if ( sender.Name == "SomeName" )
{
//...
}
或发件人实例中的任何其他内容,例如:
sender.Tag
typeof(sender)
这最后一个允许在以下之间有所不同:
MyFormA
MyFormB
- 等等...
var typeSender = sender.GetType();
if ( typeSender == typeof(MyFormA) )
else
if ( typeSender == typeof(MyFormB) )
也可以使用开关。
而不是使用字符串名称,因此 if 更健壮和可维护,因为字符串很容易更改,我们需要手动传播它,这可能会导致大问题。使用类型,重构工具可以为我们做到这一点。
但是如果 MyForm
的多个实例可以有不同的 Name
属性 值,那么我们可以检查它,那也没关系,只是需要注意。
我正在用 C# 开发一个包含 20 个 winforms 的项目。这些表单使用名为“databaseOperations”的comman class。 我的问题是如何定义使用此 class 中的方法的 winform 名称(发件人)。我想做下面类似的事情;
public class databaseOperations
{
public void loadfile(string path)
{
//if (sender form.name== "FormA")
{// codes...........;}
//else if (sender form.name== "FormB")
{// codes...........;}
}
}
我想获取winform的名字
提前致谢,
标准模式是定义这个方法:
public void LoadFile(Form sender, string path)
我们这样称呼:
var dbOps = new DatabaseOperations();
dbOps.LoadFile(myForm or this, "pathToFile");
因此现在我们可以这样检查:
if ( sender.Name == "SomeName" )
{
//...
}
或发件人实例中的任何其他内容,例如:
sender.Tag
typeof(sender)
这最后一个允许在以下之间有所不同:
MyFormA
MyFormB
- 等等...
var typeSender = sender.GetType();
if ( typeSender == typeof(MyFormA) )
else
if ( typeSender == typeof(MyFormB) )
也可以使用开关。
而不是使用字符串名称,因此 if 更健壮和可维护,因为字符串很容易更改,我们需要手动传播它,这可能会导致大问题。使用类型,重构工具可以为我们做到这一点。
但是如果 MyForm
的多个实例可以有不同的 Name
属性 值,那么我们可以检查它,那也没关系,只是需要注意。