Из всего этого новое - самое запутанное. Благодаря экспериментированию новое ключевое слово похоже на предоставление разработчикам возможности переопределить реализацию наследующего класса с реализацией базового класса, явно определяя тип. Это похоже на то, как думать наоборот.
В приведенном ниже примере результат вернет «Производный результат» до тех пор, пока тип явно не будет определен как тест BaseClass, только тогда будет возвращен «Базовый результат».
class Program
{
static void Main(string[] args)
{
var test = new DerivedClass();
var result = test.DoSomething();
}
}
class BaseClass
{
public virtual string DoSomething()
{
return "Base result";
}
}
class DerivedClass : BaseClass
{
public new string DoSomething()
{
return "Derived result";
}
}
Рассмотрите возможность использования RichTextBox - в него встроено такое поведение.
Со всем уважением к предыдущим решениям, которые предлагают измениться TextBox. Свойство ScrollBars для показывания/скрытия вертикальной полосы прокрутки по мере необходимости. Этот подход вызывает нежелательные поведения при редактировании текста во времени выполнения, такие как:
Каждый раз, когда вертикальная полоса прокрутки показывает/скрывает, текстовое поле, прокручивает к началу текста, а также каре.
Иногда, весь текст будет выбран и выделен так, можно вообразить то, что происходит, если Вы продолжаете вводить.
Поэтому я думаю TextBox. ScrollBars не должен быть изменен. Вместо этого с помощью функция ShowScrollBar API является лучшим подходом, чтобы ВЫНУДИТЬ вертикальную полосу прокрутки показать/скрыть.
В дальнейшем решение VB.Net:
API
Private Const SB_VERT As Integer = 1
<DllImport("user32")>
Private Shared Function ShowScrollBar(ByVal hWnd As IntPtr, ByVal wBar As Integer, ByVal bShow As Boolean) As Boolean
End Function
Добавляют обработчики для обоих события TextChanged и SizeChanged.
Private Sub OnTextChanged(sender As Object, e As EventArgs)
UpdateScrollBars()
End Sub
Private Sub OnSizeChanged(sender As Object, e As EventArgs)
UpdateScrollBars()
End Sub
Добавляют метод UpdateScrollBars:
Private Sub UpdateScrollBars()
If MyTextBox.ScrollBars = ScrollBars.Vertical Then
Dim sz As Size = TextRenderer.MeasureText(MyTextBox.Text, MyTextBox.Font, New Size(MyTextBox.Width, Integer.MaxValue), TextFormatFlags.WordBreak Or TextFormatFlags.TextBoxControl)
Try
Dim bShow As Boolean = (sz.Height + MyTextBox.Font.Height) > MyTextBox.Height
ShowScrollBar(MyTextBox.Handle, SB_VERT, bShow)
Catch
End Try
End If
End Sub
Вот именно все.
Отношения.