我有一個名爲LabelX1的標籤。這是在form2上。在form1上,我有一個按鈕。我希望將按鈕的文本轉移到其他表單的標籤上。我試過在C#中以另一種形式更改標籤的文本?
form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;
但它不起作用。有這樣簡單,直接的方法嗎?
我有一個名爲LabelX1的標籤。這是在form2上。在form1上,我有一個按鈕。我希望將按鈕的文本轉移到其他表單的標籤上。我試過在C#中以另一種形式更改標籤的文本?
form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;
但它不起作用。有這樣簡單,直接的方法嗎?
您需要暴露您的標籤或其財產。
在表格2:
public string LabelText
{
get
{
return this.labelX1.Text;
}
set
{
this.labelX1.Text = value;
}
}
然後,你可以這樣做:
form2 frm2 = new form2();
frm2.LabelText = this.button1.text;
有沒有一個簡單,直接的方法來做到這一點?
最簡單的方法是將labelX1作爲form2的公共成員。您遇到的問題是因爲從Form1代碼form2.labelX1不可見。在form2設計器中,您可以轉到labelX1的屬性並將其設置爲公開/內部的可見性。
更好的方法是將labelX1.Text公開爲可以在類外部的代碼中設置的屬性。
你有沒有異常?您可以在form2上創建公共屬性,使用setter在標籤上設置文本,或者將labex1訪問修飾符公開並直接設置。它應該工作。
向他展示一個例子。這裏的錯誤很明顯... – MoonKnight
@Killercam錯誤對誰來說很明顯?他沒有發佈任何錯誤信息。 –
如果您沒有足夠的信息來回答評論 - 要求提供詳細信息。你提供的不是答案。 – MoonKnight
可我labelX1公衆,它會工作,但有一個更好的方式來做到這一點
http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms
您可以修改窗體2的構造是這樣的:
public Form2(string labelText)
{
InitializeComponent();
this.labelX1.Text = labelText;
}
然後創建Form2傳入正文:
Form2 frm2 = new Form2(this.button1.text);
我同意這會工作,但這將是一次性更改。也許這對於OP來說已經足夠好了。 –
@ K'Leg,他們沒有表明他們是否需要再次改變它......我只是提供選項。 –
我同意這是他想要的一切,然後我認爲這是最好的答案。爲文本標籤創建屬性更容易。 –
裏面form2寫這個
public void ChangeLabel(string s)
{
labelX1.Text = s;
}
然後在其中創建表格2要這樣做
form2 frm2 = new form2();
frm2.ChangeLabel(this.button1.text);
或者你也可以做到這一點>>
((Label)frm2.Controls["labelX1"]).Text = "test";
我改變了我的父窗口屬性下面的代碼:
this.MdiParent.Controls["label1"].Text = "test";
form2 frm2 = new form2();
((Label)frm2.Controls["labelX1"]).Text=button1.Text;
frm2.Show();
如果您需要從代碼的其他地方訪問form2(例如按下按鈕),您將無法看到所創建表單的實例。爲了解決這個我創建一個公共實例來保存一個對它的引用,如:
public form2 form2_pub;
然後創建後,您指定的新的到你的公共實例:
form2 frm2 = new form2();
frm2.Show();
form2_pub = frm2
現在,您可以參考form2_pub在你的例程中。
適用於我至少。
請記住,在你的setter中,你可以運行任何你想要的其他代碼。 舉例來說,我用下面的表達出我想要另一種形式是什麼通過只設置show_scanning爲true:
public bool show_scanning //turns on the scanning screen
{
set
{
scanning_pnl.Visible = true;
notReady_pnl.Visible = false;
timer1.Enabled = true;
}
}
爲什麼它不工作?怎麼了? – SLaks
您是否已經顯示了form2的實例?這樣你就可以創建另一個form2實例並在那裏設置標籤文本。並顯示該實例(例如Show()/ ShowDialog()) – Steve
您的代碼是否已編譯? –