看看以下内容。接近代码末尾的问题 - 在“whoAmI”函数中......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MY_TEST_PROJECT
{
// a form class
public partial class frmTestForm1 : Form
{
// zillion lines of code
private void aFunction()
{
ClassTest.whoAmI(this);
}
// zillion lines of code
}
// another form class...
public partial class frmTestForm2 : Form
{
// zillion lines of code
private void aFunction()
{
ClassTest.whoAmI(this);
}
// zillion lines of code
}
// a home made test class
public static class ClassTest
{
// zillion lines of code
public static void whoAmI(Form theForm)
{
// IS THERE A WAY TO SEE WHAT KIND OF FORM theForm IS?
// LIKE:
// if (theForm IS A frmTestForm1)
// doThis();
// else if (theForm IS A frmTestForm2)
// doThat();
}
// zillion lines of code
}
}
答案 0 :(得分:3)
您可以使用关键字is检查。
此外,您可能希望使用polymorphism而不是检查类型来解决问题。
答案 1 :(得分:2)
有几种方法可以做到这一点:
if (theForm is frmTestForm1) doThis();
//So on
if(theForm.GetType()。UnderlyingSystemType == typeof(frmTestForm1)) doThis();
第一种方法的缺点是,例如,如果您的frmTestForm2是frmTestForm1的派生,并且您使用类似if(yourform is frmTestForm1)
的代码,并且您的表单指向frmTestForm2实例,则“is”关键字将返回true。
答案 2 :(得分:0)
你试过这个并没有用吗?尝试从对象获取类型没有问题。虽然您将其作为基类型发送,但该对象仍然是派生类类型。
答案 3 :(得分:0)
if (theForm.GetType().ToString() == typeof(frmTestForm1).ToString())
{
// Do your stuff
}