我的标题可能没有任何意义。我将通过向您展示一个示例来尝试将我的问题翻译成英语,因为我不知道该怎么说。 (英语是我的第三语言)
所以基本上,我希望能够在我的课堂上做到这一点:
public void beheerToegang(ref Form frm)
{
}
而不是(静态引用我的表单的实际名称):
public void beheerToegang(ref frmInkomsteBlad frm)
{
}
答案 0 :(得分:2)
好的,我看到了你遇到的问题的图片。
首先,您不需要在方法中添加ref(并考虑更好的命名)。它已被引用对象
public void beheerToegang(Form frm)
{
}
接下来,您可以按照自定义表单的示例(未经测试的代码)使用该方法:
frmInkomsteBlad form1 = new frmInkomsteBlad();
beheerToegang(form1);
然后访问它:
public void beheerToegang(Form frm)
{
string formTitle = frm.Text;
}
但是,您无法以自定义格式frmInkomsteBlad访问已定义的属性/字段。例如:
public class frmInkomsteBlad : Form{
public string CustomString{get;set;} // this property cannot be accessed
}
但是有一些方法可以解决这个问题,首先是使用类型转换:
public void beheerToegang(Form frm)
{
if(frm is frmInkomsteBlad){
frmInkomsteBlad typeCastedForm = (frmInkomsteBlad)frm;
string customString = typeCastedForm.CustomString;
}
}
上面的例子是不好的做法,但很容易实现。如果您更关心更好的做法,请考虑使用interfaces。例如:
public interface ICustomForm{
string Title{get;set;}
string CustomString{get;set;}
object CustomObject{get;set;}
}
在你的frmInkomsteBlad表格中实现它。
public class frmInkomsteBlad : Form, ICustomForm{
public string Title{
get{
return this.Text;
}
set{
this.Text = value;
}
}
//other implementation here
}
然后你就可以使用它:
public void beheerToegang(ICustomForm frm)
{
string customString = frm.CustomString;
string title = frm.Title;
object customObject = frm.CustomObject;
}
答案 1 :(得分:1)
你能解释一下你的问题吗? 为什么使用关键字ref?表单是一个对象,所以如果你想操作它,你可以使用
public void beheerToegang(Form frm)
'如何调用'方法beheerToegang中的问题还是其他问题。我不清楚吗? 看来你是荷兰人,如果你愿意,你可以用荷兰语问这个问题。这是我的母语。
如果问题只是调用方法,那么您可以使用:
beheerToegang(ref yourformname);