仅面板对话框

Dialog box for Panel only

提问人:Ankit Goel 提问时间:10/8/2023 更新时间:10/9/2023 访问量:82

问:

我知道这听起来可能很愚蠢,但这是我项目的真正要求。我在表单中有一个面板,此面板仅用于打开和关闭后续表单。现在,我有一个显示对话框,要求在面板内输入是或否,但是当表单已经在该面板中打开时。这是第一个问题。另一个是我希望对话框应该只停止面板内部的操作,而不是包含面板的表单。有没有办法得到这个。请为此分享一些代码。

C# Visual-Studio WinForms 模式对话框 面板

评论


答:

0赞 wenbingeng-MSFT 10/9/2023 #1

我可能理解你的第一个要求。在面板中打开其他表单。如果面板中已经有表单,则会弹出一个提示框,询问是否继续。

代码如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Form2 form2;

    Form3 form3;

    private void button1_Click(object sender, EventArgs e)
    {
        if(form2 == null&&form3 == null)
        {
            CheckPanel();
        }
        else
        {
            TipBox();
        }

    }

    public void CheckPanel()
    {
        if (radioButton1.Checked)
        {

            form2 = new Form2();
            form2.TopLevel = false;
            form2.Dock = DockStyle.Fill;
            form2.Parent = panel1;
            if (form3 != null)
            {
                form3.Hide();
            }
            form2.Show();

        }

        else if (radioButton2.Checked)
        {
            form3 = new Form3();
            form3.TopLevel = false;
            form3.Dock = DockStyle.Fill;
            form3.Parent = panel1;
            if (form2 != null)
            {
                form2.Hide();
            }
            form3.Show();
        }
    }

    public void TipBox()
    {
        DialogResult result = MessageBox.Show("Do you want to continue?", "Tip", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (result.Equals(DialogResult.Yes))
        {
            CheckPanel();
            
        }
        else if (result == DialogResult.No)
        {
            this.Close();
        }
    }
}

演示如下:

enter image description here

如果我理解不正确,请告诉我。我不太理解你的第二个问题。你能详细解释一下吗?

评论

0赞 Ankit Goel 10/10/2023
github.com/Shaifalijain31/copyprojectshaifalijain 有一个主形式作为主主。它有一个名为 Mainmasterpanel 的面板。此面板用于打开其中的所有表单。现在当应用程序启动时,一个名为 TDlloading_error 的表单会在这个主面板内打开。如果用户按转义键,则会显示一个名为 FormBackground 的新表单(具有一定的不透明度和透明度),并在其上显示一个名为 MainExitForm 的表单,作为对话框打开 showDialog() 。到这里都很好.
0赞 Ankit Goel 10/10/2023
问题是当这个MainExitForm(对话框)加载时,正如我们所知,showdialog会停止所有表单的执行,直到它们关闭,我只希望它应该阻止面板及其表单的执行。
0赞 wenbingeng-MSFT 10/16/2023
我按照您的描述运行了您的项目,当我尝试按住“Esc”时,整个屏幕变暗,但没有弹出新页面
0赞 Ankit Goel 10/20/2023
请在 github.com/Ankitgoel2009/Tallyincsharp 上找到该项目
0赞 Ankit Goel 10/20/2023
请在上面的链接上找到该项目