我正在开发一个传统的C#winforms应用程序,今天我找到了这段代码:
// get our current "TopMost" value (ours will always be false though)
bool top = TopMost;
// make our form jump to the top of everything
TopMost = true;
// set it back to whatever it was
TopMost = top;
它会弹出当前表单,但对我来说这似乎完全是愚蠢的(即使有附加注释)。我在一个小的孤立的winforms应用程序中尝试过它,在我看来,可以通过简单调用Focus
方法安全地替换它。
我错了,或者我可以更换它并且今晚仍然睡得好吗?
感谢你的帮助!
答案 0 :(得分:1)
我在我正在使用的一个遗留项目中看到了类似的东西。代码就像:
//The form was by-default TopMost
TopMost = false;
//some codes
MessageBox.Show("something goes here");
//some codes
TopMost = true;
这样做是为了让MessageBox
保持在最顶层,因为MessageBoxes显示在TopMost表单后面。如果不是这样,他们可以使用MessageBox.Show(this, "something goes here");
而无需重新设置TopMost
属性
所以我觉得这里发生了类似的事情
答案 1 :(得分:1)
不,你不应该关注窗口。来自MSDN:
Focus是一种低级方法,主要用于自定义控件作者。相反,应用程序员应该对子控件使用Select方法或ActiveControl属性,或者表单的Activate方法。
也许你的原创作者并不知道激活,或者他的应用程序中有另一个最重要的形式导致了一些麻烦,但这已经消失了,这种突然出现的方法是一个残余。你能安全地用Activate替换它吗?我们对应用UI的了解不够充分;从表面上看,我会说是的,但是我也说过,如果现有的代码按照预期工作,通过更改它可能会获得很少的里程,如果应用程序获得其他最重要的形式,可能会失去一些功能关于未来。我确定你的时间可以更好地花在其他部分上! :)
答案 2 :(得分:0)
关闭并在加载表单上重新加载它们时,程序可能会将其保存在文件或其他位置,在这种情况下,上面的代码可能会有用,在其他情况下我认为它不会有用。 例如,您将TopMost属性更改为True并关闭表单或程序(如果它保存在某个位置),当您运行应用程序或再次加载此表单时,您可以使用TopMost表单而不更改其值。