可以';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");方法之间设置了一个桥接方法,它也永远不起作用。请告知。

可以';t更改文本框文本

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_ClickForm1的成员,因此您已经有了一个需要操作的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();
    }
}

我不推荐这种方法,但如果你必须。。。