我有3個按鈕,在這種情況下,將它們稱爲按鈕1,2和3.然後我在同一個解決方案中使用不同的表單,並帶有標籤。我想要的是當按下每個按鈕時,label.text需要在另一個表單上更改。更改按鈕上的標籤文本以不同的形式點擊
像中的示例:當: - 按鈕1點:標籤文本= 1 - 按鍵2點:標籤文本= 2 - 按鈕3點:標籤文本= 3
我有3個按鈕,在這種情況下,將它們稱爲按鈕1,2和3.然後我在同一個解決方案中使用不同的表單,並帶有標籤。我想要的是當按下每個按鈕時,label.text需要在另一個表單上更改。更改按鈕上的標籤文本以不同的形式點擊
像中的示例:當: - 按鈕1點:標籤文本= 1 - 按鍵2點:標籤文本= 2 - 按鈕3點:標籤文本= 3
您可以使用Application.OpenForms收集並添加一個簡單的方法給每個表單,需要改變什麼的想法
在點擊按鈕添加
foreach (Form f in Application.OpenForms)
{
if(f Is Form1)
(f as Form1).ChangeLabel("NewText 1");
else if (f is Form2)
(f as Form2).ChangeLabel("NewText 2");
else if (f is Form3))
(f as Form3).ChangeLabel("NewText 3");
}
在您要更改添加(例如爲Form)
.... other code inside your Form1,Form2,Form3 classes...
public void ChangeLabel(string newText)
{
this.Label1.Text = newText;
}
.... other code inside your Form1,Form2,Form3 classes...
(當然,你需要每個窗體改變Form1上,窗體2,Form3來實現你的表格和LABEL1的標籤的確切名稱變更的類)
您也可以讓您的標籤公開,並使用類似語法
的真實姓名(f as Form1).Label1 = "New Text 1";
但我通常寧願離開由外部代碼不可見的窗體託管的控件。在評論
編輯
展望下面我明白,你有三個按鈕一個形式和一種形式與一個標籤。當你點擊這些按鈕時你想改變標籤
然後代碼如下(設置每個按鈕Click事件到使用設計器的同一事件處理程序。在這個例子中我將其稱之爲ChangeLabel_Click
protected void ChangeLabel_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
SecondFormType f = Application.OpenForms.OfType<SecondFormType>().FirstOrDefault();
if(f != null)
{
if(btn.Name == "Button1")
f.ChangeLabel("NewText 1");
else if(btn.Name == "Button2")
f.ChangeLabel("NewText 2");
else if(btn.Name == "Button3")
f.ChangeLabel("NewText 3");
}
}
EDIT 2
上面的代碼利用SecondType的第一種形式是這樣,如果你有以下形式的多個實例打開SecondType你需要一個循環改變每一個表單實例
protected void ChangeLabel_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
foreach(SecondFormType f in Application.OpenForms.OfType<SecondFormType>())
{
if(btn.Name == "Button1")
f.ChangeLabel("NewText 1");
else if(btn.Name == "Button2")
f.ChangeLabel("NewText 2");
else if(btn.Name == "Button3")
f.ChangeLabel("NewText 3");
}
}
我會使用一些jQuery的此
$("#button1").on('click', function(){
$("#label").empty().append("1");
});
$("#button2").on('click', function(){
$("#label").empty().append("2");
});
$("#button3").on('click', function(){
$("#label").empty().append("3");
});
和你的HTML標籤應該是這樣的
<label id="label">Text</label>
可能錯過ED的東西,但由於缺乏語言的,我希望它給你想做的事:)
,你可以使用這樣的代表事件:y中
我們與您的按鈕形式創建DelegateEvent
//Create a delegate
public delegate void ButtonClickToOtherForm(object sender, EventArgs e);
public partial class Form2 : Form
{
//Your own event based on created delegate
public event ButtonClickToMainForm ButtonClickedToMainForm;
public Form2()
{
InitializeComponent();
}
//This method will invoke your event
private void OnButtonClickedToOtherForm(object sender, EventArgs e)
{
ButtonClickedToOtherForm?.Invoke(this, e);
}
private void button1_Click(object sender, EventArgs e)
{
//On button1_Click this will fire the event on the other form
OnButtonClickedToMainForm(this, e);
}
並在表格和標籤訂閱該事件
public Form1()
{
InitializeComponent();
//Subscribe to event from your other Form
Form2.ButtonClickedToOtherForm += Form2_ButtonClickedToOtherForm;
}
//Button on Form2 has been clicked
private void Form2_ButtonClickedToMainForm(object sender, EventArgs e)
{
//change your Label Text here...
}
在點擊的時刻已經開通形式? – Steve
不是,但是當你點擊其中一個,你應該看到表格2改變了標籤 – Donovan