我已經父窗體Form1和子窗體TEST1我想改變孩子父窗體標籤文本形式在我的父母形式我有方法showresult()
public void ShowResult() { label1.Text="hello"; }
我想在button button事件中更改label.Text="Bye";
窗體我的子窗體test1。請給出任何建議。
我已經父窗體Form1和子窗體TEST1我想改變孩子父窗體標籤文本形式在我的父母形式我有方法showresult()
public void ShowResult() { label1.Text="hello"; }
我想在button button事件中更改label.Text="Bye";
窗體我的子窗體test1。請給出任何建議。
,設置子窗體對象的Parent
財產這樣的..
Test1Form test1 = new Test1Form();
test1.Show(this);
在你的父窗體,讓你的標籤文本的屬性等作爲..
public string LabelText
{
get
{
return Label1.Text;
}
set
{
Label1.Text = value;
}
}
從你的孩子組成,你可以得到標籤文本那樣..
((Form1)this.Owner).LabelText = "Your Text";
毫無疑問,有很多的快捷方法可以做到這一點,但在我看來,一個好的辦法是提高從請求父形式變化子窗體的事件顯示的文字。父表單應該在創建孩子時註冊此事件,然後可以通過實際設置文本對其進行響應。
所以在代碼,這將是這個樣子:
public delegate void RequestLabelTextChangeDelegate(string newText);
public partial class Form2 : Form
{
public event RequestLabelTextChangeDelegate RequestLabelTextChange;
private void button1_Click(object sender, EventArgs e)
{
if (RequestLabelTextChange != null)
{
RequestLabelTextChange("Bye");
}
}
public Form2()
{
InitializeComponent();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.RequestLabelTextChange += f2_RequestLabelTextChange;
}
void f2_RequestLabelTextChange(string newText)
{
label1.Text = newText;
}
}
它多一點長篇大論,但是從有其父的任何知識它去將你的子窗體。這對於可重用性來說是一個很好的模式,因爲它意味着子表單可以在沒有中斷的情況下在另一個主機(沒有標籤)中再次使用。
'((Form1)this.ParentForm)''在那個label1不可訪問之後 – Milind
@Milind檢查更新的答案 – Talha
我在父窗體中使用labelText屬性,它現在可以在子窗體中訪問,但是在運行時它會拋出異常「Object引用未設置爲對象的實例「。 – Milind