我有一个主表单(称为Form1
),其中我有一个标签(称为lbl1
)。
除此之外,我还有一个看起来像这样的方法:
public void SetLabelText(string lblText)
{
lbl1.Text = lblText;
}
现在我想从一个类中调用该方法(在我的例子中,它被称为MyInput)
我试图通过
调用该方法Form1 F1 = new Form1();
F1.SetLabelText="This is an example";
或(不使用我创建的方法)
Label L1 = new Form1().lbl1;
L1.Text = "This is an example";
然而,在这两种情况下,第二个Form1
打开并导致我的其余程序出现各种问题。标签本身具有公共修饰符。
如何从MyInput类中更改label.text?
编辑: 首先,我要感谢你的帮助。但建议的解决方案没有达到预期效果。
我想我必须向您展示更多解决此问题的代码:
Form1中:
namespace Project2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
.
.
.
myInput.Check();
public void SetLableText(string lblText)
{
lbl1.Text = lblText;
}
}
}
}
在我班上:
namespace Project2
{
class MyInput
{
public static void Check()
{
CODE FOR CHECKING STATUS OF DEVICE
if(status == 0)
{
//At this point lbl1.Text should be changed
}
}
}
}
我希望这会有所帮助。
答案 0 :(得分:0)
通过调用Form F1 = new Form1()
,您正在创建表单的新实例,这就是您查看第二个窗口的原因。
首次创建时,您需要在某个地方存储对该表单的引用。然后,您需要在该实例上调用SetLabelText()
。
例如
// Program.cs
public static Form1 _form;
// sample main method
public static void Main(string[] args)
{
_form = new Form1();
Application.Run(_form);
}
然后您可以将其称为Program._form.SetLabelText("Whatever the string is.");
答案 1 :(得分:0)
这里有另一个建议: 这是你的方法表格:
public void SetLabelText(string text)
{
lbl1.Text = text;
}
在这个课程中,您有所需的方法,该方法以Form1
为参数
如果MyInput
和Form1
位于同一名称空间中,或者您添加了适当的引用,那么仅才能正常工作!
class MyInput
{
public static void Check(Form1 form)
{
// do what ever job you have to do
form.SetLabelText("JobResultHere");
}
}
修改强>
现在它强烈依赖于此函数调用的位置:
MyInput.check(...
如果调用是在Form的类中,并且需要更改标签,那么你可以像这样调用它
MyInput.check(this);
this
表示调用发生的类的当前实例。
如果您要从其他地方调用它,请确保Form1
实例即将到来。
new
的新实例,请 不要使用Form1
here是关于如何使用new
的文档以及它对程序流程的影响。希望这可以提供帮助。
答案 2 :(得分:-1)
首先,每次使用新关键字后,您都会创建一个新的Form1实例,之后会改变另一种形式。
您需要的示例代码可以像
那样完成class MyInput
{
private Form1 form;
public MyInput(Form1 form1)
{
this.form = form1;
setFormText("test");
}
private void setFormText(string text)
{
form.label1.Text = text;
}
}
像这样你可以像在form1中那样做
var myinput = new MyInput(this);
和Form1在MyInput类中使用。 使用相同的方法,您可以通过构造函数将表单实例传递给另一个表单。
但是,如果您尝试在代码示例中完成所做的工作,则可能需要对“参考”和“实例”进行更多研究。