我尝试运行另一个表单时出现InvalidOperationException

时间:2016-04-08 13:33:00

标签: c# winforms

    private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Application.Run(new Preferences());
    }
    private void button10_Click(object sender, EventArgs e)
    {
        Application.Run(new Configuration());
    }
    private void button6_Click(object sender, EventArgs e)
    {
        Application.Run(new Configuration());
    }

这是我使用的代码。当我打开程序时,它会在发生一个指定事件后抛出异常。调试器提供了附加信息:“在单个线程上启动第二个消息循环不是有效操作。请改用Form.ShowDialog。”这是我认为正常的事情。使用ShowDialog()(参见下面的代码)实际上不会解决问题。

    private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Preferences.ShowDialog();
    }
    private void button10_Click(object sender, EventArgs e)
    {
        Configuration.ShowDialog();
    }
    private void button6_Click(object sender, EventArgs e)
    {
        Configuration.ShowDialog();
    }

相反,有一个错误,“非静态字段,方法或属性'Form1.ShowDialog()'需要一个对象引用。是的,它发生是因为VS2015认为我想显示一个属于的对话框在形式上,我的反对是打开另一种形式。它还建议简化成员访问......

这是Program.cs中的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace y_cruncher_GUI_edition
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [MTAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

编辑:我在项目中有三个表单(Form1,Configuration和Preferences)。程序打开Form1,当按下特定按钮时,我想显示配置或首选项。

我希望我之前没有做过任何愚蠢的事情,就像我之前提出的一个问题(还是一个新手)。任何评论,帮助或投票表示赞赏。 :)

1 个答案:

答案 0 :(得分:0)

如果您要做的只是显示另一个表单,只需将以下代码放在按钮的onClick()事件中。

Preferences p1 = new Preferences(); p1.show();