【发布时间】:2012-05-03 06:18:19
【问题描述】:
我确定这很简单,但我无法弄清楚。我在这里和 msdn 上搜索过,但一直找不到答案。我需要能够通过richtextbox.Selection.Select(TextPointer1, Textpointer2) 设置richtextboxes 选择。
【问题讨论】:
标签: wpf richtextbox
我确定这很简单,但我无法弄清楚。我在这里和 msdn 上搜索过,但一直找不到答案。我需要能够通过richtextbox.Selection.Select(TextPointer1, Textpointer2) 设置richtextboxes 选择。
【问题讨论】:
标签: wpf richtextbox
Application.Current 包含您应用程序中所有窗口的集合,您可以通过查询获取另一个窗口,例如
var window2 = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is Window2) as Window2;
然后您可以从代码中引用该控件,如
var richText = window2.MyRichTextBox
【讨论】:
Application.Current.Windows.OfType(Of MainWindow).First
【讨论】:
如果你想要的话,你应该能够从后面的 Window2 代码访问 Window1 上的控件。生成的字段为internal by default。
您只需在 Window1 上为控件命名,如下所示:
<RichTextBox x:Name="richtextbox" ... />
在Window2后面的代码:
var window = new Window1(); // or use the existing instance of Window1
window.richtextbox.Selection.Select(TextPointer1, Textpointer2);
更好的选择是将选择操作封装在 Window1 后面的代码中的方法中,以避免泄露内部。那么你会有:
// Window1.cs
public void Select(int param1, int param2)
{
richtextbox.Selection.Select(param1, param2);
}
// Window2.cs
var window = new Window1(); // or use the existing instance of Window1
window.Select(TextPointer1, Textpointer2);
【讨论】:
您不能从另一个窗口访问 texbox,因为它是该窗口私有的,但是您可以通过将 RichTextBox 公开为窗口上的公共属性来解决此问题(hack)
public RichTextBox RichTextBox {
get{
//the RichTextBox would have a property x:Name="richTextbox" in the xaml
return richTextBox;
}
}
【讨论】: