c# - 在表单中打开文件,未处理 ThreadStateException

标签 c# forms file button xna

我有一个名为 Form1.cs 的表单,当我运行它时,它出现错误:ThreadStateException was unhanded。

我正在尝试从所需位置打开一个文件,然后打开它,以便文件将自动加载到屏幕上的文本框中。我听说过这个 [STAThread] 但不知道如何添加它。当我尝试在 main 方法中使用它时,它显示为“在此声明类型上无效”。

Form1.cs:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string strfilename = openFileDialog1.FileName;

            MessageBox.Show(strfilename);
        }
    }
}

解决方案浏览器:

enter image description here

Game1.cs 是它启动时,我有一个函数女巫调用窗体按 F1 弹出:

protected override void Update(GameTime gameTime)
    {
        // Allows the game to exit
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        if (Keyboard.GetState().IsKeyDown(Keys.F1) && (!isForm1Open))
        {
            isForm1Open = true;
            Form1 form1 = new Form1();
            form1.FormClosed += new System.Windows.Forms.FormClosedEventHandler(
                (s, e) => { isForm1Open = false; });
            form1.ShowDialog();
        }

        base.Update(gameTime);
    }

最佳答案

[STAThread] 是一个将您的方法标记为在 single-threaded apartment 中运行的属性.对于 WinForms 程序,您必须将此属性放在 Program.cs 的 Main 方法中,如下所示:

[STAThread]
static void Main()
{
    Form1 f = new Form1();
    Application.Run(f);
}

这是因为 WinForms 直接与 COM 组件交互(UI 小部件大部分仍然是 COM,Windows 的窗口和文件系统也是如此)。

关于c# - 在表单中打开文件,未处理 ThreadStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20636878/

相关文章:

c# - 如何在负载平衡环境中获取 DNS 名称?

java - 从 Java 发送 OWA 登录表单

javascript - 错误不会显示在以 html 形式提交的表单上的 span 标记中 - Jquery

java - 我怎么知道 BufferedReader 是否与 DataInputStream 链接在一起?

c# - 如何使用程序包管理器控制台为控制台 C# 应用程序安装 clrzmq?

c# - 在不同查询 SQL 中插入和选择

c# - Mono "This XmlWriter does not accept Text at this state Prolog."中的 XDocument 保存错误

html - 没有表格的布局表单字段

c - 如何从 C 语言的文件中读取行?

python - 文件在同一个文件夹中,但仍然得到 FileNotFoud