在C#中以模态显示的表单时如何避免闪烁/闪烁效果

时间:2013-06-07 12:09:36

标签: c# modelform

我一直在使用基于c#的Windows窗体应用程序,我需要一些帮助。

如示例代码所示,

frmPopUp frmAdd = new frmPopUp();

frmAdd.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
frmAdd.Location = new System.Drawing.Point(450, 200);
frmAdd.showdialog();
this.Create();

当我在代码中使用此功能并单击frmAdd边界外的任何地方时,它会闪烁或闪烁,这很烦人,我不想要那样。 (但是“创建”功能确实在表格关闭后调用)这是我的问题我不想眨眼,同时功能也在表格关闭后调用

经过一些搜索后,我尝试从下面提到的链接导入解决方案,在这种情况下,我遇到的问题是在frmadd表单关闭后应该始终调用Create函数。但是在创建表单时调用它。 e.g:

SetNativeEnabled(false);
frmPopUp frmAdd = new frmPopUp();

frmAdd.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
frmAdd.Location = new System.Drawing.Point(450, 200);
frmAdd.Closed += (s, a) =>
{
    SetNativeEnabled(true);
};
frmAdd.Show(this);

this.Create();

我很擅长制作Windows应用程序,所以还有一些我不理解的东西,所以如果我一开始不理解的话,请耐心等待。

这些是我尝试过的链接:

还有更多,但没有找到解决方案

提前感谢。

1 个答案:

答案 0 :(得分:0)

“在关闭frmadd表单后,应始终调用Create函数。”

所以改变你的匿名代表:

    private void button1_Click(object sender, EventArgs e)
    {
        frmPopUp frmAdd = new frmPopUp();

        frmAdd.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
        frmAdd.Location = new System.Drawing.Point(450, 200);
        frmAdd.Closed += (s, a) =>
        {
            this.Create();
        };
        frmAdd.Show(this);
    }