用户控制控件不聚焦

时间:2016-02-16 14:41:22

标签: c# winforms

我似乎遇到了一些问题。我有一个用户控件,我可以动态地填写其他控件。

以下是我为动态添加的控件设置的属性示例。它们的性质相当完全相同,但控制类型不同(我稍后会对其进行描述)。这是一个循环......:

Label l_Name = new Label();
l_Name.Name = "lbl_Name_" + info.ID;
l_Name.BorderStyle = BorderStyle.FixedSingle;
l_Name.Width = width;
l_Name.Height = 20;
l_Name.AutoSize = false;
l_Name.AutoEllipsis = true;
l_Name.Top = this.LastBottom;
l_Name.Left = width;
l_Name.Text = info.NodeName;
l_Name.TextAlign = ContentAlignment.MiddleCenter;
l_Name.Click += Text_Label_Click;
ctrls.Add(l_Name);

每行控件的处理如下:

 ________________________________________
|Panel   |Label  |Label  |Label  |Panel  |
|  ____  |       |       |       |  ___  |
| |PicB| |       |       |       | |CKB| |
|  ----  |       |       |       |  ---  |
|________|_______|_______|_______|_______|

其他控件与上面的Label定义之间的区别在于PictureBoxDoubleClick个事件,CheckBoxOnCheckedChange个事件。这些输入控件的Panel用于显示正确的边框/大小/容器。

我遇到的问题是除CheckBox之外的任何控件似乎都不想关注。不是通过单击,跳格或使用箭头键。经过相当多的调试后,似乎只要点击并使用了一个控件,焦点就会立即返回到一个特定的CheckBox

我的定义中是否缺少某些内容以确保可以对每个控件进行标记/聚焦?当控件聚焦时,我期待看到传统的虚线边框线,特别是在使用键盘时,但没有。是因为我没有添加或设置TabIndex属性或类似的东西?我假设它是由渲染器自动设置的......

我实现了臭名昭着的WinPrc函数: private string GetFocusControl() 使用带控件名称的消息框以便调试并查看谁获得焦点,并且它始终是完全相同的复选框。

我做错了什么?

0 个答案:

没有答案