我似乎遇到了一些问题。我有一个用户控件,我可以动态地填写其他控件。
以下是我为动态添加的控件设置的属性示例。它们的性质相当完全相同,但控制类型不同(我稍后会对其进行描述)。这是一个循环......:
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
定义之间的区别在于PictureBox
有DoubleClick
个事件,CheckBox
有OnCheckedChange
个事件。这些输入控件的Panel
用于显示正确的边框/大小/容器。
我遇到的问题是除CheckBox
之外的任何控件似乎都不想关注。不是通过单击,跳格或使用箭头键。经过相当多的调试后,似乎只要点击并使用了一个控件,焦点就会立即返回到一个特定的CheckBox
。
我的定义中是否缺少某些内容以确保可以对每个控件进行标记/聚焦?当控件聚焦时,我期待看到传统的虚线边框线,特别是在使用键盘时,但没有。是因为我没有添加或设置TabIndex
属性或类似的东西?我假设它是由渲染器自动设置的......
我实现了臭名昭着的WinPrc函数:
private string GetFocusControl()
使用带控件名称的消息框以便调试并查看谁获得焦点,并且它始终是完全相同的复选框。
我做错了什么?