这很有效:
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");
方法之间放置桥接方法,它永远不会奏效。请指教。
答案 0 :(得分:4)
private void button1_Click(object sender, EventArgs e)
{
click();
}
您不需要创建表单的新实例来调用其中一种方法。
答案 1 :(得分:2)
您应该订阅实际更改文本的TextChanged
事件 BEFORE ,否则事件处理程序尚未附加:
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)
{
}
}
答案 2 :(得分:1)
这是因为您{{}} 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)
{
}
答案 3 :(得分:1)
以下是制作Windows表单应用程序的完整指南。你必须从基础知识开始学习。 Your First C# Windows Form
答案 4 :(得分:0)
因为您在新click()
实例上调用Form
方法,请将您的代码更改为:
private void button1_Click(object sender, EventArgs e)
{
click();
}
public void click()
{
textBox1.Text= "asdasdas";
}
答案 5 :(得分:0)
您正在制作表单的新实例并点击该表单,这不是您正在查看的表单,因此您无法看到更改。
而是只调用此表单的Click()
方法。
答案 6 :(得分:0)
我认为您的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();
}
}
我不推荐这种方法,但如果你必须......