gpt4 book ai didi

c# - 以不同的形式单击按钮时更改标签文本

转载 作者:行者123 更新时间:2023-11-30 20:35:39 24 4
gpt4 key购买 nike

我有 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");
}

在您要更改的每个表单中添加(例如 Form1)

.... 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、Form2、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");
}
}

编辑 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");
}
}

关于c# - 以不同的形式单击按钮时更改标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com