首页 > 解决方案 > C#一次两个Form在闪烁,焦点在切换

问题描述

我一次打开两个表单,我看到两个表单都在闪烁并且焦点在两者之间切换的问题。知道有什么问题吗?

两种形式都应该在不同的显示中,但我也可以在 4K 显示器中重现这种行为。在这个 4K 显示器上,表格有点被覆盖,我看到 form 和 formTwo 闪烁。每一种形式都想成为最重要的。

在 formTwo 中是有动画的网站,当 formTwo 有焦点时。这个动画像两个窗体窗口一样闪烁。

form = new PresentationScreen("web", new Rectangle(0, 0, 1920, 1080)); 
form.StartPosition = FormStartPosition.Manual;
formTwo.FormBorderStyle = FormBorderStyle.None;
form.Left = 1920;
form.Top = 1080;
form.Show();

formTwo = new PresentationScreen("web", new Rectangle(0, 0, 1920, 1080));
formTwo.StartPosition = FormStartPosition.Manual;
formTwo.FormBorderStyle = FormBorderStyle.None;
formTwo.Show();

PresentationScreen 仅包含一个具有 CefSharp.WinForms.ChromiumWebBrowser 的面板:

public partial class PresentationScreen : Form {

    private Panel mWebPanel;
    ChromiumWebBrowser chromeBrowser;
    private String mCurrentWeb;

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

    public PresentationScreen(String type, String path, Rectangle resolution) {
        InitializeComponent();
        mWebPanel = new Panel();
        mWebPanel.Size = new Size(resolution.Width, resolution.Height);

        if (string.IsNullOrEmpty(path)) {
            Program.logError("[PresentationScreen] path is empty!");
            return;
        }

        if (String.Compare(type, "web") == 0) {
            mCurrentWeb = path;
            webPanel.Visible = true;
            Program.InitializeChromium();   //TODO vlastni object
            chromeBrowser = new ChromiumWebBrowser();
            chromeBrowser.MaximumSize = new Size(resolution.Width, resolution.Height);
            chromeBrowser.Load(mCurrentWeb);
            // Add it to the form and fill it to the form window.
            webPanel.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill;
        }
    }

    public void loadWeb(String web) {
        mCurrentWeb = web;
        chromeBrowser.Load(web);
    }

    public void useWebScript(String script) {
        try {
            chromeBrowser.ExecuteScriptAsync(script);
        } catch (Exception ex) {
            Program.logError("[PresentationScreen]: " + ex.Message);
        }
    }
}

我正在使用目标框架 .NET 4.6

标签: c#winforms

解决方案


推荐阅读