Я уверен, что это - что-то очень простое, но я не могу понять это. Я искал здесь и на MSDN и не мог найти ответ. Я должен смочь установить richtextboxes выбор через richtextbox. Выбор. Выберите (TextPointer1, Textpointer2).
Application.Current
содержит коллекцию всех окон в вашем приложении, вы можете получить другое окно с запросом, например
var window2 = Application.Current.Windows
.Cast<Window>()
.FirstOrDefault(window => window is Window2) as Window2;
, а затем вы можете ссылаться на элемент управления из своего кода, как в
var richText = window2.MyRichTextBox
У вас должен быть доступ к элементам управления в Window1 из кода Window2 позади, если это что ты хочешь. Сгенерированные поля по умолчанию являются внутренними .
Все, что вам нужно, это назвать элемент управления в 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);
Вы не можете получить доступ к текстовому ящику из другого окна, поскольку он является частным для этого окна, однако вы можете обойти это, выставив RichTextBox как общедоступное свойство в вашем окне (взлом)
public RichTextBox RichTextBox {
get{
//the RichTextBox would have a property x:Name="richTextbox" in the xaml
return richTextBox;
}
}