使用 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 属性 值,那么我们可以检查它,那也没关系,只是需要注意。