C# 以其他形式更改按钮单击时的标签文本

C# 以其他形式更改按钮单击时的标签文本,c#,C#,我有3个按钮,在这种情况下称它们为按钮1、2和3。然后我在同一溶液中有一个不同的形式,有一个标签。我想要的是,当按下每个按钮时,另一个表单上的label.text需要更改 例如:当: -单击按钮1:标签文本=1 -按钮2已单击:标签文本=2 -单击按钮3:Label Text=3我会为此使用一些jQuery $("#button1").on('click', function(){ $("#label").empty().append("1"); }); $("#button2").on

我有3个按钮,在这种情况下称它们为按钮1、2和3。然后我在同一溶液中有一个不同的形式,有一个标签。我想要的是,当按下每个按钮时,另一个表单上的label.text需要更改

例如:当: -单击按钮1:标签文本=1 -按钮2已单击:标签文本=2
-单击按钮3:Label Text=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>
文本
可能遗漏了一些内容,但鉴于缺乏语言,我希望它能让您了解您想要做什么:)

您可以使用集合,并向每个需要更改的表单添加一个简单的方法

在按钮中单击添加

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");
}
在每个要更改的表单中添加(例如,表单1)

(当然,您需要将Form1、Form2、Form3更改为实现表单的类的真实名称,将Label1更改为要更改的标签的确切名称)

您还可以公开标签,并使用如下语法

(f as Form1).Label1 = "New Text 1";
但我通常倾向于让表单承载的控件在外部代码中不可见

编辑

查看下面的评论,我了解到您有一个带有三个按钮的表单和一个带有一个标签的表单。当你点击这些按钮时,你想改变标签

然后代码如下(使用设计器将每个按钮单击事件设置为相同的事件处理程序。在本例中,我将其称为ChangeLabel\u 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");
    }
}
受保护的无效更改标签\u单击(对象发送方,事件参数e)
{
按钮btn=发送方为按钮;
SecondFormType f=Application.OpenForms.OfType().FirstOrDefault();
如果(f!=null)
{
如果(btn.Name==“Button1”)
f、 变更标签(“新文本1”);
否则如果(btn.Name==“按钮2”)
f、 变更标签(“新文本2”);
否则如果(btn.Name==“按钮3”)
f、 变更标签(“新文本3”);
}
}
编辑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");
    }
}
受保护的无效更改标签\u单击(对象发送方,事件参数e)
{
按钮btn=发送方为按钮;
foreach(Application.OpenForms.OfType()中的SecondFormType f)
{
如果(btn.Name==“Button1”)
f、 变更标签(“新文本1”);
否则如果(btn.Name==“按钮2”)
f、 变更标签(“新文本2”);
否则如果(btn.Name==“按钮3”)
f、 变更标签(“新文本3”);
}
}

您可以使用如下委托事件:

在表单中使用按钮创建委派事件

//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...
        }

表单在点击的时候已经打开了吗?没有,但是当你点击其中一个表单时,你应该会看到表单2的标签已经改变了。我感觉OP是在处理windows表单而不是web表单!Uhu c#但是没关系!VS在第2部分说:无效的标记“:”在类、结构或接口成员声明中不知道为什么,但是2在同一部分,它说:成员修饰符“public”必须在成员类型和名称之前,这只是一个需要放置ChangeLabel方法的示例。它应该放在需要更改标签的表单类中。您已经拥有表单类的声明,不需要再添加声明。我会删除它以避免混淆啊,好的,检查!所以我必须将表单1、2和3更改为按钮名称或表单名称。因为只有2个表单。1个带有3个按钮,1个带有必须更改的标签。我还不明白你的问题。所以让我试着理解。你有一个表单带有三个按钮,一个表单带有一个label.点击一个按钮你想在第二个表单中更改标签吗?是的,就是这样。但是我已经检查过了,所以三个按钮中的两个会给出相同的..更改:P
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...
        }