Почему свойство AutoSize в Windows Form TextBox не отображается в IntelliSense - PullRequest
6 голосов
/ 17 апреля 2011

В соответствии со спецификацией (http://msdn.microsoft.com/en-us/library/k63c05yf.aspx)

Текстовые поля в Windows Forms должны иметь свойство autosize.

И оно фактически не прерывается при вводе TextBox1.AutoSize = true.Тем не менее, он не отображается в списке свойств IntelliSense.

Почему это так?

Я попытался перекомпилировать, и все это компилируется, но свойство textbox.autosize никогда не появляется.

Ответы [ 2 ]

10 голосов
/ 17 апреля 2011

Свойство AutoSize для TextBox всегда имеет значение true, вызванное конструктором.Свойство скрыто в родительском классе (TextBoxBase), чтобы случайно не установить его в false.Он имеет [Browsable (false)], чтобы скрыть его в сетке свойств, [EditorBrowsable (EditorBrowsableState.Never)], чтобы скрыть его во всплывающем окне IntelliSense.Однако вы можете изменить его:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        textBox1.AutoSize = false;
        textBox1.Height += 10;
    }
}

Да, выглядит не очень хорошо.Теперь вы знаете, почему он скрыт.

1 голос
/ 17 апреля 2011

Свойство Control.AutoSize (и его переопределение в TextBoxBase) объявлено со следующим атрибутом:

[EditorBrowsable(EditorBrowsableState.Never)]

IntelliSense использует это свойство, чтобы принять решение не отображать свойство в списке завершений.

(я не знаю достаточно о Windows Forms, чтобы сказать, почему это свойство помечено как недоступное для просмотра.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...