辅助监视器显示主监视器的一部分

本文关键字:监视器 一部分 显示 | 更新日期: 2023-09-27 17:56:27

我创建了一个win应用程序,它使用辅助显示器来显示图像。我使用以下代码来检测和设置辅助监视器(这是主监视器的扩展监视器)的位置。

public void secondarydisplay()
{
    FrmSecondaryDisplay secdis = new FrmSecondaryDisplay();
    Screen[] screens = Screen.AllScreens;
    secdis.MyBase = this;
    this.MySecScreen = secdis;
    secdis.Show();
    setFormLocation(secdis, screens[1]);
}
private void setFormLocation(Form form, Screen screen)
{
    Rectangle bounds = screen.Bounds;
    form.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);
    form.StartPosition = FormStartPosition.Manual;
}

问题是我在辅助显示器的最左角看到这条 6 毫米的细白线。 这只不过是主显示器的扩展。 如何让它消失? 将光标移动到辅助显示器并单击辅助显示器的屏幕时,此白线消失。 将光标移回主显示器并单击它会使白线出现在辅助显示器上。 好心帮助我如何解决此问题。它在二级拖把中看起来很丑。

辅助监视器显示主监视器的一部分

始终在

Show()之前准备窗口属性

public void Secondarydisplay()
{
    if (Screen.AllScreens.Count() == 1)
    {
        return; // No second display
    }
    var secdis = new FrmSecondaryDisplay();
    // Actually you shall use secdis.Show(this) to build the relation of the forms. 
    // When "this" closes, the second display form closes.
    secdis.MyBase = this; 
    this.MySecScreen = secdis;

    // Setup Windows Position before Show()
    secdis.StartPosition = FormStartPosition.Manual;
    secdis.Location = Screen.AllScreens[1].WorkingArea.Location;
    secdis.TopMost = true;
    secdis.FormBorderStyle = FormBorderStyle.None;
    secdis.WindowState = FormWindowState.Maximized;
    secdis.Show(this); // See comment above
}