无法避免表格完全闪烁

时间:2019-03-20 10:46:59

标签: c# winforms flicker


我试图避免在Windows应用程序(MDI)中闪烁表格,但无法完全避免。

我尝试过的...
1)我已将此代码放入form.cs

protected override CreateParams CreateParams
        {
            get
            {
                var cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;  
                return cp;
            }
        }

2)启用了窗体和面板的双重缓冲

typeof(Panel).InvokeMember("DoubleBuffered", BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic, null, pnlNotification, new object[] { true });
typeof(Form).InvokeMember("DoubleBuffered", BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic, null, this, new object[] { true });            

主要问题
我上面的代码运行良好,但是当我最小化我的应用程序并再次最大化它时,闪烁再次开始。

我的表单结构
我在每种表单中都使用了一个父面板,并将所有控件放入该面板中。

我是这样叫MDI Parent的表格

if (menuStrip1.Enabled == true)
        {
            frmProductSale ProductSale = new frmProductSale(this);
            ProductSale.MdiParent = this;
            ProductSale.Show();                
        }

和子窗体代码..
构造函数...

 public frmProductSale(frmHome Hm)
        {
            InitializeComponent();
            Home = Hm;            
        }

加载

private void frmProductSale_Load(object sender, EventArgs e)
        {
            UserName = ((Label)Home.Controls.Find("lblUserName", true).SingleOrDefault()).Text;
            BrowseStatus = (Label)Home.Controls.Find("lblBrowseStatus", true).SingleOrDefault();
            ResetStatus = (Label)Home.Controls.Find("lblResetStatus", true).SingleOrDefault();
            SaveUpdateStatus = (Label)Home.Controls.Find("lblSaveUpdateStatus", true).SingleOrDefault();
            RecordSelectionStatus = (Label)Home.Controls.Find("lblRecordSelectionStatus", true).SingleOrDefault();
            QuantityStatus = (Label)Home.Controls.Find("lblQuantityStatus", true).SingleOrDefault();
            ImportantMethods.CreateEvents(pnlProductSale, this, "Product Sale");
            FillValues(this, UserName);
            txtPatientName__L.Focus();            
        }

谢谢。

0 个答案:

没有答案