【问题标题】:Windows form doesn't stay open after it is openedWindows 窗体在打开后不会保持打开状态
【发布时间】:2012-11-30 19:58:02
【问题描述】:

我正在编写一个简单的 WinForms 应用程序,它解析文本文件以获取正确的值,当它找到不正确的值时,会打开一个新表单,显示不正确或缺失的值,用户可以输入正确的值。我有一个问题,例如,我会故意在我的文本文件中放置两个不正确的值来检查,并且表单窗口在第一个错误打开后立即关闭,并且只在第二个错误修复时保持打开状态。

foreach (string line in lines)
             {
                 string[] items = line.Split('\t').ToArray();

                 for (int i = 0; i <custIndex.Count; i++)
                 {
                     int index = custIndex[i];

                     Globals.Code = items[index - 1].ToUpper();

                     if (!CountryList.ContainsKey(Globals.Code) && !StateList.ContainsKey(Globals.Code))
                     {
                         form2.textBox1.Text = Globals.Code;
                         form2.Show();//Shows form2 for user to enter correct input


                     }


                 }//inner for
             }//inner for each

这是表单 2 的代码(表单 2 在循环之前的方法开头被实例化):

public  partial class Form2 : Form
{
    public Form2()
    {

        InitializeComponent();


    }

    public void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void textBox2_TextChanged(object sender, EventArgs e)
    {

    }
    //
    private void button1_Click(object sender, EventArgs e)
    {
        Globals.Code = textBox2.Text;
        this.Close();           
    }

    private void Form2_Load(object sender, EventArgs e)
    {



    }




}

用户应该在为 Globals.Code 输入新值后按下按钮(我使用了一个全局变量,不确定这是否是最干净的做事方式)。之后表单关闭并返回表格 1。我认为表格 2 正在正确显示文本文件中的第一个错误值,但它会立即打开和关闭。有没有办法让窗户保持打开状态?很抱歉,如果这很复杂,我正在做很多 Winforms,但我并不是这方面的专家。

谢谢, 阿曼达

【问题讨论】:

  • 您将需要使用 ShowDialog() 而不是 Show(),这样循环就不会继续运行并更改 textBox1.Text 属性。并在循环之后执行其他任何操作。就像关闭表单一样。

标签: c# winforms


【解决方案1】:

您最好的选择可能是使用模式对话框,因此将form2.Show 更改为form2.ShowDialog

但是,当使用带有这样循环的全局变量时,全局变量只会在循环完成后将最后一个值放入表单中。如果您使用 ShowDialog 方法,调用将在该行阻塞,直到用户关闭对话框。之后,您可以从文本框中读取值并对其进行处理。

【讨论】:

  • 谢谢,我真的不知道 Show 和 ShowDialog 的区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2013-10-21
  • 2019-07-06
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
相关资源
最近更新 更多