我有一个奇怪的。
创建新表单。然后添加以下函数:
protected override void OnLoad ( EventArgs e )
{
if ( _goWrong )
{
this.MinimumSize = new System.Drawing.Size ( 420, 161 );
this.Font = new Font ( "Tahoma", this.Font.Size, this.Font.Style );
}
TextBox box = new TextBox ();
this.Controls.Add ( box );
}
如果_goWrong为false,那么我们不设置最小大小或更改字体,当我打开表单时焦点位于新创建的TextBox上。然后,用户可以愉快地输入..
如果_goWrong为真,那么我们设置最小尺寸并更改字体,当打开表单时,焦点无处可见!
到底是怎么回事?为什么这会对焦点产生影响?我在这里错过了什么吗?
这是在.Net 2.0.5
由于
答案 0 :(得分:2)
出错时,设置最小表单大小会抢断焦点(转到表单)。更改字体无效。这很奇怪,但是......
<强>更新强>
在OnLoad中设置焦点虽然有效(box.Select())。
答案 1 :(得分:1)
好的,我尝试了这个,并提出了一些意见:
我无法解释为什么会发生这种情况(我认为它可能是Tab键顺序的一个问题 - 它不是),但这应该为解决方法提供一个想法。
答案 2 :(得分:1)
请尝试使用以下方法。如果您不确定哪个最小化函数对您有影响,则需要覆盖OnShown
方法。
protected override void OnShown( EventArgs e )
{
textbox1.Focus();
base.OnShown( e );
}
答案 3 :(得分:0)
这样做(如果我正确地读了你的问题):
protected override void OnLoad ( EventArgs e )
{
if ( _goWrong )
{
this.MinimumSize = new System.Drawing.Size ( 420, 161 );
this.Font = new Font ( "Tahoma", this.Font.Size, this.Font.Style );
}
TextBox box = new TextBox ();
this.Controls.Add ( box );
box.Focus();//<----Add this line here and the textbox will get focus.
}