[英]How can I use method from an class instantiated in another form?
我在Form1
有一個instaciaded類,我想把它稱為Form2
它有可能嗎?
例如:
public TheClass thClass; //member from Form1
/* ... */
public void foo() {
thClass = new TheClass(...);
}
表格2:
public void baa() {
Form1 form1 = new Form1();
form1.thClass.MethodName( .. ) ;
}
我在Form2
調用.baa()
方法時得到以下.baa()
:
Object reference not set to an instance of an object.
最好的方法是什么? ref
? 我想這樣做不會再次實例化thClass。
我希望這很清楚。 提前致謝。
你得到這個異常因為thClass
為null
- 在你的例子中你必須在使用thClass
之前調用foo()
。
引用類型字段沒有什么特別之處 - 它們可以像類的任何其他公共字段一樣被訪問(並且Form1
是一個類)。 一般情況下,你會希望使用屬性而避免使用公共字段,因為對它們的任何更改都會破壞現有的使用者 - 這個屬性只能由你可以表達為的擁有類來設置
public TheClass SomeClass {get; private set;}
你應該調用Foo()來啟動“thClass”....
public void baa() {
Form1 form1 = new Form1();
form1.foo();
form1.thClass.MethodName( .. ) ;
}
因為你在foo方法中初始化thClass,所以你只需在使用thClass之前調用該方法
public void baa() {
Form1 form1 = new Form1();
form1.foo();
form1.thClass.MethodName( .. ) ;
}
或者你可以直接初始化
public void baa() {
Form1 form1 = new Form1();
form1.thClass = new TheClass(...);
form1.thClass.MethodName( .. ) ;
}
最好的方法可能是將Form1中的TheClass實例傳遞給Form2的構造函數。
// Code from Form 1
public partial class Form1 : Form
{
private TheClass thClass;
public Form1()
{
InitializeComponent();
}
public void foo()
{
thClass = new TheClass(...);
}
private void button1_Click(object sender, EventArgs e)
{
Form2 objForm2 = new Form2(thClass);
objForm2.Show();
}
}
// Code From Form 2
public partial class Form2 : Form
{
private TheClass thClass;
public Form2(TheClass thCls)
{
thClass = thCls;
InitializeComponent();
}
private void baa(object sender, EventArgs e)
{
thClass.MethodName( .. );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.