C# 关闭按钮上的窗体单击

标签 c# winforms

我尝试在 button1_Click 之后关闭表单,我尝试在几个地方使用 this.Close(),但它不起作用。我希望单击按钮打开一个名为 newDB 的新表单。但是当使用 this.Close() 它只会关闭表单而不会打开我的新表单。有没有其他方法可以关闭第一个表单并仍然打开 newDB 表单?

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        conn = new SqlCeConnection(@"Data Source=|DataDirectory|\Baseball.sdf; Persist Security Info=False;");

        DB newDB = new DB();
        newDB.ShowDialog();  
        this.Close();  
    }
    catch (Exception error)
    {
        MessageBox.Show("Could not connect to database!\n" + error, "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    // this.Close();
}

最佳答案

ShowDialog 将阻塞,直到该对话框关闭,因此您无法在调用类中执行您想要的操作。我要做的是将 this 指针传递给 newDB 构造函数,暂时将其作为 Form 记住,并在 Load<newDB函数,在传入的Window/Form上调用Close,达到你想要的效果。

如果您将它作为 Form 参数传递,DB 将不必“知道”您正在调用的确切具体类名,但您仍然能够对其调用 Close

这有帮助吗?

关于C# 关闭按钮上的窗体单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319440/

相关文章:

c# - 如何像 DebugView 应用程序一样读取 c# Debug.WriteLine?

c# - 任何人都知道带有表单模块的 Asp.Net C# CMS 类型系统

c# - Moq:如何检索模拟对象的 ID

c# - 非常奇怪的 Application.ThreadException 行为

c# - 如何提取列表中具有相同值的项目数?

c# - 检测表单已被 Dispose()ed 的正确方法

c# - 需要一个允许重复键的数据结构

c# - 在数据库中表示 "Recurring Events"的最佳方式是什么?

c# - 如何从类中调用变量

winforms - 用于 Intranet 而不是基于 Web 的 Windows FORMS