我们有一个使用双显示器设置的应用程序 - 用户A将与监视器1一起使用,用户B将同时使用监视器2.监视器2是触摸屏设备.
现在,问题是,当用户A在他的屏幕中输入内容时,如果用户B尝试做某事,用户A将最终失去他窗口的焦点,这是灾难性的.
即使用户B对Monitor 2执行某些操作,在Monitor 1中保持对窗口的关注可能是一个很好的解决方案?
一些弯头油脂是可能的.将此代码粘贴到您在触摸屏上显示的表单中:
protected override CreateParams CreateParams { get { const int WS_EX_NOACTIVATE = 0x08000000; CreateParams param = base.CreateParams; param.ExStyle |= WS_EX_NOACTIVATE; return param; } }
这确保了表单不会从主表单中窃取焦点.看起来像这样:
public partial class Form1 : Form { public Form1() { InitializeComponent(); Thread t = new Thread(SecondMonitor); t.IsBackground = true; t.SetApartmentState(ApartmentState.STA); t.Start(); } private void SecondMonitor() { Form2 f2 = new Form2(); f2.StartPosition = FormStartPosition.Manual; f2.Left = 800; // Use Screen class here... f2.ShowDialog(); }