我知道这里已经有几条线了。我需要的是有一个窗口窗口始终集中意味着如果我点击记事本或任何程序,它不会输入任何数据,只在我的Windows窗体文本框中输入数据。Windows窗体窗口总是聚焦?
我发现这个代码,工作起来有些将更多地解释
//Delegates for safe multi-threading.
delegate void DelegateGetFocus();
private DelegateGetFocus m_getFocus;
Thread newThread;
public MemberLogin()
{
m_getFocus = new DelegateGetFocus(this.getFocus);
InitializeComponent();
spawnThread(keepFocus);
toggleFocusButton.Text = "OFF";
timer1.Interval = 2000;
textBox1.Select();
}
//test focus stuff
//Spawns a new Thread.
private void spawnThread(ThreadStart ts)
{
try
{
newThread = new Thread(ts);
newThread.Start();
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Exception!", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
//Continuously call getFocus.
private void keepFocus()
{
while (true)
{
getFocus();
}
}
//Keeps Form on top and gives focus.
private void getFocus()
{
//If we need to invoke this call from another thread.
if (this.InvokeRequired)
{
this.Invoke(m_getFocus, new object[] { });
}
//Otherwise, we're safe.
else
{
//having this seemed to have kept my windows onTop at all times even when off
// this.TopMost = true;
this.TopMost = true;
this.Activate();
this.textBox1.Select();
this.textBox1.Focus();
}
}
此代码似乎当我的Visual Studio项目在窗口关闭是最上面的,但并不能很好地只有当我打开项目意味着工作有焦点意思我可以键入其他程序。奇怪的是,我发现记事本和我的文本框都闪烁着线条,告诉你在哪里写文本。如果我从Visual Studio项目运行我的应用程序,那么它应该可以正常工作,当我尝试点击其他窗口时,它不会让我访问这是我想要的内容。
所以我在为项目打开那么即使我做了工作的.exe和其他copys妥善我关闭该项目解决方案与项目,为什么它只能正确打开
而且只要注意有点混乱该程序做了我上面解释的。
只做了一些更多的测试,并且它似乎只在该进程运行vhost.exe(这是Visual Studio托管进程)时才能正常工作。我禁用它的设置,当我从VS它工作正常开展,但是当我在bin文件夹只运行exe文件我仍然得到奇怪的结果
编辑
这里有一个快速的视频我做了我的结果http://www.youtube.com/watch?v=1ozpHSRGnMo
新的编辑
我没有解决这个问题是什么做这个设置我在全屏模式下的应用程序还挺这样用户可以去点击其它窗口不关闭这一个第一
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
Windows有一个明确的应对措施到位,从这样阻止你。程序员从不考虑明显的失败模式:如果*两个*程序会这样做会怎么样? – 2013-03-19 23:23:26
[保持应用程序在顶部和焦点 - 始终]可能的重复(http://stackoverflow.com/questions/2444842/keeping-an-application-on-top-and-in-focus-always) – 2013-03-20 04:57:58
退房我刚刚制作的这段视频展示了http://www.youtube.com/watch?v=1ozpHSRGnMo的结果,并且不是重复的,因为我声明了代码的工作原理,并且我从本网站的另一篇文章中获得了它。但是代码只有在从VS2012执行时才有效,这意味着当我按F5按钮来运行我的应用程序时。就像我甚至不能点击其他窗口一样,这就是我想要的!但后来我运行这个exe文件,我可以在其他windwows(如记事本)中编写代码。所以我在想什么VS2012给我的应用程序更多优先于其他人。 – Steven 2013-03-20 06:44:48