代碼如下 兩個表單
// From1
public static TextBox textbox1 = new TextBox();
private void From1_Load(object sender, EventArgs e)
{
textbox1.Text = "aaa";
pnlRight.Controls.Add(textbox1);
}
// From2
private void From2_Load(object sender, EventArgs e)
{
Textbox textbox2 =From1.textbox1;
//textbox2.text="bbb"
//messagebox.show(textbox2.text +"\r\n"+From1.textbox1.text); 這個彈出的都是bbb
pnlRight.Controls.Add(textbox2 );
}
//Form2回傳到Form1的時候,textbox1會因為From2關閉,而被釋放掉,
private void From2_FormClosing(object sender, FormClosingEventArgs e)
{
Form FM1= Application.OpenForms("From1");
if (FM1!= null)
FM1.Show();
}
Form2回傳到Form1的時候,textbox1會因為From2關閉,而被釋放掉,
導致Form1點擊按鈕打開Form2 直接報錯
求解如何解決
uj5u.com熱心網友回復:
這是什么鬼代碼uj5u.com熱心網友回復:
TextBox textbox2 = Form1.textbox1;這句雖然可以通過編譯,但是是沒有意義的,畢竟TextBox是可視控制元件。
如果你的目的是想將textbox1賦值給 textbox2,那就要用OOP的物件復制概念,多載 = 運算子,或者多載 Assign()方法。即:
TextBox textbox2 = new TextBox();
textbox2.Assign(textbox1);
類似這樣。
uj5u.com熱心網友回復:
還可以直接多載建構式:class MyTextBox: TextBox
{
public MyTextBox(TextBox)
{
...
}
}
MyTextBox textbox2 = new MyTextBox(textbox1);
總之,物件實體是不能簡單使用 = 來相互賦值的。
uj5u.com熱心網友回復:
傳個值過去不就好了,干嘛要勞師動眾的整個物件傳過去
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/268271.html
標籤:C#
上一篇:當WinForm表單設定了AutoScroll屬性為true遇到的問題
下一篇:spread到處excel
