首页 > 解决方案 > C# showdialog 窗口有时停留在主窗口的后面

问题描述

我有一个主窗口,当用户在文本框中单击 C 时,有一个文本框,另一个小窗口打开,因为 showdialog 出现信息,问题是有时它会打开,但有几次它在你不能的主窗体后面看到它,甚至无法访问它似乎主窗体变成了显示对话框。如果在后台打开 Windows 文件夹,当在文本框中单击 C 时,该文件夹会出现在屏幕上我的程序前面,但焦点仍停留在程序上。这是一个真正的斗争,我已经研究了很长时间,我似乎找不到问题。

我已经尝试过 bringtofront()、Activate() 但无论如何都不起作用 showdialog 窗口应该始终位于父窗口的顶部。

这是我的代码:


     if (e.KeyCode == Keys.C && txtQauntity.Text != "" && (txtForm.Text == "Cash Sale" | txtForm.Text == "Debtors Cash Sale" | txtForm.Text == "Debtors Account Sale" | txtForm.Text == "New Laybye"))
            {
                e.Handled = true;
                e.SuppressKeyPress = true;

                using (var frm = new frmQuotation(this))
                {
                    
                    frm.BackColor = this.BackColor;
                    frm.gbProductDetails.BackColor = this.BackColor;
                    frm.gbDispute.BackColor = this.BackColor;
                    
                    frm.chkDispute.BackColor = this.BackColor;
                    frm.txtSellIncl.BackColor = this.BackColor;
                    frm.txtPriceDate.BackColor = this.BackColor;
                    frm.txtOnOrder.BackColor = this.BackColor;
                    frm.txtOnhand.BackColor = this.BackColor;
                    frm.txtMininumLvl.BackColor = this.BackColor;
                    frm.txtMarkup.BackColor = this.BackColor;
                    frm.txtLastReceived.BackColor = this.BackColor;
                    frm.txtLastQtyGrv.BackColor = this.BackColor;
                    frm.txtItemRating.BackColor = this.BackColor;
                    frm.txtItemCode.BackColor = this.BackColor;
                    frm.txtDisputeReason.BackColor = this.BackColor;
                    frm.txtDisputeDate.BackColor = this.BackColor;
                    frm.txtDesc.BackColor = this.BackColor;
                    frm.txtCostIncl.BackColor = this.BackColor;
                    frm.txtCode.BackColor = this.BackColor;
                    frm.gbCredentials.BackColor = this.BackColor;
                    frm.txtuser.BackColor = this.BackColor;
                    frm.txtPass.BackColor = this.BackColor;
                    frm.Size = new Size(953, 650);
                    frm.txtItemCode.Focus();
                    frm.ActiveControl = frm.txtItemCode;
                    
                    frm.Activate();
                    frm.BringToFront();
                    frm.ShowDialog(this); // this is where the window opens

标签: c#windowsfocusshowdialog

解决方案


推荐阅读