我有一个奇怪的问题。 我的情况如下:
我有一个表单,它包含几个用户控件,这些控件又包含其他用户控件或其他基本控件,如TextBox,RichTextBox等。
作为编辑文本框时逻辑的一部分,我以编程方式创建另一个控件并通知表单。表单上的其他控件可能会反过来产生更多控件。
麻烦的是,这些控件在创建时会从我的控件中窃取焦点,并将其添加到表单/其他控件中。
有没有办法阻止我的控件在发生时失去焦点?
答案 0 :(得分:2)
也许你应该首先在逻辑中包含选项卡索引,当你添加控件时,将选项卡索引设置为最后一个选项卡索引+ 1,如果你先设置选项卡顺序,你的工作会更容易。控件,并在设计时将常量设置为最后一个选项卡索引,请参见此处:
private const int LAST_TAB_INDEX = 5; // an Example private int lastTabIndex = LAST_TAB_INDEX; private void AddControl(){ // Set up your control Control ctl = new Control(); // .... ctl.TabIndex = lastTabIndex; this.Add(ctl); this.lastTabIndex++; }
您可以从示例中看到选项卡索引如何递增,这样就可以防止 窃取焦点的控制......
希望这有帮助, 最好的祝福, 汤姆。
答案 1 :(得分:0)
除非可见并启用,否则控件无法接受(窃取)焦点。您是否尝试使用其中一个或两个创建控件为false,然后在适当的时候打开它们?