可以';t更改文本框文本
本文关键字:文本 可以 | 更新日期: 2023-09-27 18:20:07
这很好用:
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "dsfsdfsd";
}
但当我这样使用它时,它从来没有在textbox1.text中工作过。在编译器中成功地更改了文本,但文本没有显示任何
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.click();
}
public void click()
{
textBox1.Text= "asdasdas";
}
请说明为什么除了直接处理用户(按钮)的方法之外,我不能更改任何方法的文本框文本,即使我在(按钮)方法和textbox1.text=("asdasdas");
方法之间设置了一个桥接方法,它也永远不起作用。请告知。
private void button1_Click(object sender, EventArgs e)
{
click();
}
您不需要创建表单的新实例来调用其方法之一。
您应该在实际更改文本之前订阅TextChanged
事件,否则事件处理程序尚未附加:
public void click()
{
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
textBox1.Text = "asdasdas";
}
此外,在调用click方法时,您不应该多次订阅同一事件。最好只执行一次订阅,例如在构造函数中:
public class Form1: Form
{
public Form1()
{
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
}
public void click()
{
textBox1.Text = "asdasdas";
}
public void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
这是因为new
正在创建一个新的Form1
实例。button1_Click
是Form1
的成员,因此您已经有了一个需要操作的Form1
实例。
即
private void button1_Click(object sender, EventArgs e)
{
this.click(); // or just `click();`
}
public void click()
{
textBox1.Text= "asdasdas";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
因为您在新的Form
实例上调用click()
方法,所以将代码更改为:
private void button1_Click(object sender, EventArgs e)
{
click();
}
public void click()
{
textBox1.Text= "asdasdas";
}
您正在创建一个新的表单实例并单击它,这不是您正在查看的表单,因此您不会看到更改。
相反,只需调用这种形式的Click()
方法。
以下是如何制作Windows表单应用程序的完整指南。你必须从基础开始学习。您的第一个C#Windows窗体
我认为您的Program.bridge
调用造成了混乱。
private void button1_Click(object sender, EventArgs e)
{
Program.bridge();
}
在该方法中,您正在实例化一个新的Form1
。这对已经显示的表单没有任何影响。尝试以以下方式更改button1_click
功能,看看它是否有帮助:
private void button1_Click(object sender, EventArgs e)
{
this.click();
}
编辑:如果必须使用bridge
方法,您可以在Program.cs
:中这样做
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
TheForm = new Form1();
Application.Run(TheForm);
}
private static Form1 TheForm { get; set; }
public static void bridge()
{
TheForm.Click();
}
}
我不推荐这种方法,但如果你必须。。。