我有一个Form(Form2),其中包含一个Split Container,RichTextBox位于左侧面板上,WebBroswer位于右侧面板上。
我将表单显示为MDIParent表单的子项1.我想要做的是复制活动MDI子项的选定文本。但是由于RichTextBox位于Split容器中,我无法定位RichTextBox并且它不返回任何内容。
Form activeChild = this.ActiveMdiChild;
if (activeChild != null)
{
try
{
RichTextBox theBox = (RichTextBox)activeChild.ActiveControl;
if (theBox != null)
{
// Put the selected text on the Clipboard.
Clipboard.SetDataObject(theBox.SelectedText);
}
}
catch
{
MessageBox.Show("Unable to Copy to Clipboard");
}
}
结果是,消息框显示,这意味着我无法正确定位RTB。如何获取当前活动的RTB?
答案 0 :(得分:0)
由于从子表单返回的ActiveControl
是SplitContainer
控件,因此我们需要更深入一级并从该容器中获取ActiveControl
以便最终获得RichTextBox
控件。var childSplitContainer = this.ActiveMdiChild?.ActiveControl is SplitContainer
? (SplitContainer)activeChildForm.ActiveControl
: null;
var splitContainerRTB = childSplitContainer?.ActiveControl is RichTextBox
? (RichTextBox)childSplitContainer.ActiveControl
: null;
Clipboard.SetDataObject(splitContainerRTB?.Text ?? string.Empty);
请注意,我们必须检查对象类型,并在此过程中使用null,以防可能选择不同的控件。
以下是获取富文本框文本的一种方法(如果未选中,则为空字符串):
grid-template-rows: max-content;