C# SplitContainer.Panel1选择更改为SplitContainer.Panel2选择

C# SplitContainer.Panel1选择更改为SplitContainer.Panel2选择,c#,.net,winforms,controls,splitcontainer,C#,.net,Winforms,Controls,Splitcontainer,SplitContainer控件的MSDN文档说明: 使用SplitContainer控件,您可以创建复杂的用户界面; 通常,在一个面板中选择一个选项 确定在中显示哪些对象 另一个小组 所以,我有一个SplitContainer,它是水平分割的,有顶部和底部面板。 我想做的是-当Panel1顶部的控件接收到焦点时,我需要Panel2底部的控件进行聚焦。然后焦点必须再次回到Panel1中的控件 问题是,Panel2中的控件在CanFocus上返回false。我理解,对于某些类型的控件,这是可能发生

SplitContainer控件的MSDN文档说明:

使用SplitContainer控件,您可以创建复杂的用户界面; 通常,在一个面板中选择一个选项 确定在中显示哪些对象 另一个小组

所以,我有一个SplitContainer,它是水平分割的,有顶部和底部面板。 我想做的是-当Panel1顶部的控件接收到焦点时,我需要Panel2底部的控件进行聚焦。然后焦点必须再次回到Panel1中的控件

问题是,Panel2中的控件在CanFocus上返回false。我理解,对于某些类型的控件,这是可能发生的,并且控件的每个祖先都必须具有焦点才能接收焦点。我也试过了,但没用。CanFocus仍然返回false


有没有其他解决办法?有人试过这个吗。我尝试做的与Outlook做的基本相同。当您在收件箱中选择邮件时。消息正文显示在底部面板中。

您所描述的内容与Outlook不符。如果我在Outlook中的邮件列表中选择了一封邮件,则邮件列表中的焦点将保持不变。是的,消息正文确实显示在下面,但焦点不移动


不应该有任何东西阻止您更改任一面板中显示的控件或内容。您不必移动焦点来完成此任务。

您真的需要将焦点设置为Panel2吗

我猜您的Panel2包含类似RichTextBox的对象,为了简单起见,称为RTB1

假设有人选择了Panel1中的某个内容。为了简单起见,假设您有一个名为LV1的ListView控件

然后,在LV1.SelectedIndexChanged事件上,读取该事件并将数据填充到RTB1

你真的不需要关注Panel2,除非我遗漏了什么