WinForms NumericUpDown позволяет нам выбирать диапазон текста внутри него с помощью метода Select (Int32, Int32). Есть ли способ установить/получить исходную точку выбранного текста, количество выбранных символов и выбранную часть текста, как мы можем это сделать для других элементов управления, подобных текстовым полям, с помощью свойств SelectionStart, SelectionLength и SelectedText?WinForms NumericUpDown: Есть ли способ прочитать информацию о выборе текста?
ответ
NumericUpDown Contr ol имеет внутренний TextBox, доступный из коллекции элементов управления. Это второй элемент управления в коллекции после элемента управления UpDownButtons. Поскольку WinForms еще не разрабатывается, практически безопасно сказать, что базовая архитектура элемента управления NumericUpDown не изменится.
Наследуя от управления NumericUpDown, вы можете легко разоблачить эти свойства TextBox:
public class NumBox : NumericUpDown {
private TextBox textBox;
public NumBox() {
textBox = this.Controls[1] as TextBox;
}
public int SelectionStart {
get { return textBox.SelectionStart; }
set { textBox.SelectionStart = value; }
}
public int SelectionLength {
get { return textBox.SelectionLength; }
set { textBox.SelectionLength = value; }
}
public string SelectedText {
get { return textBox.SelectedText; }
set { textBox.SelectedText = value; }
}
}
Это невозможно с помощью ванильного элемента NumericUpDown.
В этой статье автор объясняет, как он подклассы контроль NumericUpDown разоблачить базовый объект TextBox, и тем самым подвергая «отсутствующий» свойствами:
http://www.codeproject.com/Articles/30899/Extended-NumericUpDown-Control
Он использует отражение, чтобы получить ссылку на основной объект TextBox:
private static TextBox GetPrivateField(NumericUpDownEx ctrl)
{
// find internal TextBox
System.Reflection.FieldInfo textFieldInfo = typeof(NumericUpDown).GetField("upDownEdit", System.Reflection.BindingFlags.FlattenHierarchy | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
// take some caution... they could change field name
// in the future!
if (textFieldInfo == null) {
return null;
} else {
return textFieldInfo.GetValue(ctrl) as TextBox;
}
}
Приветствия
Подобный ответ LarsTech, вы можете быстро бросить NumericUpDown.Controls[1]
как TextBox
доступ к этим свойствам, не создавая новый класс.
((TextBox)numericUpDown1.Controls[1]).SelectionLength; // int
((TextBox)numericUpDown1.Controls[1]).SelectionStart; // int
((TextBox)numericUpDown1.Controls[1]).SelectedText; // string
- 1. Есть ли способ прочитать информацию о системе в Inno Setup
- 2. Есть ли способ получить информацию о GPU?
- 3. C# winforms numericupdown управление
- 4. Более подробную информацию о выборе меню Glass
- 5. Есть ли способ распечатать любую расширенную информацию о StackOverflowException?
- 6. Есть ли способ извлечь информацию о стиле документов из tesseract?
- 7. Есть ли способ квантифицировать информацию о краю, содержащуюся в изображении
- 8. Есть ли способ получить информацию о весенних отображениях, определенных @Controller?
- 9. Есть ли способ получить подробную форматированную информацию о классе Python?
- 10. Есть ли способ svn cp и передавать информацию о глубине?
- 11. Есть ли способ получить информацию о модуле во время чтения?
- 12. есть ли способ сохранить информацию о маркерах, поступающую с сервера
- 13. Есть ли способ получить информацию о владельце iPhone-пользователя программно?
- 14. Есть ли способ получить текстовую информацию о контейнере?
- 15. Есть ли способ получить информацию о каждом разрешении в android
- 16. Есть ли способ увидеть подробную информацию о поиске IndexSearcher
- 17. Есть ли способ получить информацию о сервере с помощью SQL
- 18. Есть ли способ получить информацию о HITType с учетом HITTypeId?
- 19. Есть ли способ получить информацию о кластере Hadoop программно?
- 20. Есть ли способ включить кнопку Metro NumericUpDown от MahApps?
- 21. C# winforms, сохраняющее значение из numericupdown
- 22. Как программно получить информацию о выборе шрифта в Mathematica
- 23. Есть ли способ прочитать файл, кроме read()?
- 24. Есть ли способ прочитать свойства сжатого архива?
- 25. Есть ли способ программно прочитать описание макроса?
- 26. Есть ли простой способ ПРОЧИТАТЬ ULS программно?
- 27. Есть ли способ изменить содержимое элементов при их выборе?
- 28. Winforms: Embedded NumericUpDown control внутри ListView
- 29. Могу ли я прочитать информацию о SKStreetType до начала навигации?
- 30. Прочитать строку из текста и отправить информацию?
Это отличная идея! Я знал, что NumericUpDown состоит из нескольких суб-элементов управления, а один из них - TextBox, поэтому на самом деле ключевым моментом всех решений является то, как найти это текстовое поле. Но этот подход, на мой взгляд, самый простой, и он также не использует отражение, которое может вызвать проблемы с ограничениями безопасности. Если мы будем беспокоиться о индексе субконтроля 1, мы можем просто перечислить коллекцию NumericUpDown.Controls и найти элемент управления типа TextBox, чтобы сделать наш код надежным и универсальным. – TecMan