在应用程序中修改主窗体及其控件。运行C#

时间:2014-01-23 04:57:54

标签: c# .net

我正在尝试在我的应用程序的主窗体中修改按钮上的文本(例如)。 但是这个东西对Application.Run()之前创建的窗口不起作用。

 static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 Mainwindow = new Form1();
        Application.Run(Mainwindow);
        ///Some stuff to do...
        Mainwindow.button1.Text = "TextToChangeTo"; // And nothing happens here
    }

这里有什么好的解决方法吗?

3 个答案:

答案 0 :(得分:1)

您正尝试在Application.Run()方法之后在主窗体中设置按钮文本。这是不正确的,因为在应用程序完成之前不会设置文本。

尝试将代码添加到MainWindow()的构造函数或load事件中。例如:

public partial class MainWindow : Form
{
    public MainWindow()
    {
        InitializeComponent();
        this.button1.Text = "Some Text";
    }
}

更新

显示两种可能的解决方案,用于操纵另一种形式的控件。

MainWindow传递给另一个表单。

窗体2

public partial class Form2 : Form
{
    MainWindow mainWindow;
    public Form2()
    {
        InitializeComponent();
    }

    public Form2(MainWindow mainWndow)
        :this()
    {
        this.mainWindow = mainWndow;
    }

    public void DoWork()
    {
        if (this.mainWindow != null)
            this.mainWindow.button1.Text = "I set your text";
    }
}

主窗口

private void button1_Click(object sender, EventArgs e)
{
    var form2 = new Form2(this);
    form2.ShowDialog();
}

此示例使用MainWindow关键字传递this的实例。在Form2中,您会看到DoWork()然后可以设置值。

在Program类中创建对MainWindow的静态引用。

Program.cs的

static class Program
{
    public static MainWindow MainWindow { get; private set; }

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Program.MainWindow = new MainWindow();
        Application.Run(Program.MainWindow);
    }
}

Form2.cs

public void DoWork()
{
    Program.MainWindow.button1.Text = "I set your text";
}

答案 1 :(得分:0)

如果您在Application.Run(MainWindow)关闭后执行MainWindow之后添加内容。 所以在它之前添加。

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Form1 Mainwindow = new Form1();

    Mainwindow.button1.Text = "TextToChangeTo"; 

    Application.Run(Mainwindow);
}

答案 2 :(得分:0)

你应该像这样编辑你的代码:

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 frm = new Form1();
        frm.button1.Text = "Some Text";
        Application.Run(frm);
    }