Как сделать Поле комбинированного списка в winforms только для чтения

Ошибка анализа: синтаксическая ошибка, неожиданная '['

Эта ошибка возникает в двух вариантах:

Вариант 1

$arr = [1, 2, 3];

Синтаксис инициализатора этого массива был введен только в PHP 5.4; это приведет к возникновению ошибки парсера в версиях до этого. Если возможно, обновите свою установку или используйте старый синтаксис:

$arr = array(1, 2, 3);

См. Также этот пример из руководства.

Вариант 2

$suffix = explode(',', 'foo,bar')[1];

Результаты функции разыменования массива также были введены в PHP 5.4. Если обновление невозможно, вам нужно использовать временную переменную:

$parts = explode(',', 'foo,bar');
$suffix = $parts[1];

См. Также этот пример из руководства.

54
задан CodesInChaos 8 May 2013 в 09:29
поделиться

7 ответов

Статья ComboBox-with-read-only-behavior предлагает интересное решение:

Создают и текстовое поле только для чтения и поле комбинированного списка в том же месте. Когда Вы хотите режим только для чтения, отображаете текстовое поле, когда Вы хотите, чтобы это было доступно для редактирования, отобразило поле комбинированного списка.

19
ответ дан CodesInChaos 7 November 2019 в 07:35
поделиться

Почему Вы только не используете текстовое поле? Текстовое поле имеет свойство "Read only", и так как Вы хотите, чтобы Ваше поле комбинированного списка только отобразило данные, я не вижу, почему Вам было бы нужно поле комбинированного списка.

альтернатива - то, что Вы просто уравновешиваетесь, вход для "на значении изменил" событие. Тем путем Вы будете отображать свою информацию никакая мать, что делает пользователь...

0
ответ дан David Božjak 7 November 2019 в 07:35
поделиться

Лучшая вещь, которую я могу предложить, состоит в том, чтобы заменить поле комбинированного списка текстовым полем только для чтения (или просто возможно, маркировка) - тот способ, которым пользователь может все еще выбирать/копировать значение, и т.д.

, Конечно, другая развязная тактика должна была бы установить DropDownStyle на DropDownList, и просто удалить все другие опции - тогда, у пользователя нет ничего иного для выбора;-p

9
ответ дан Marc Gravell 7 November 2019 в 07:35
поделиться

Не уверенный, если это - то, что Вы ищете, но...

Набор DropDownStyle = DropDownList

Тогда на событии

If (ComboBox1.SelectedIndex <> 0)
{
    ComboBox1.SelectedIndex = 0
}

SelectedIndexChanged Эта ужасная часть - то, что они будут "чувствовать" как, они могут изменить его. Они могли бы думать, что это - ошибка, если Вы не даете им предупреждение, говоря им, почему они не могут изменить значение.

11
ответ дан Dan Williams 7 November 2019 в 07:35
поделиться

сделайте DropDownStyle, свойство к DropDownList вместо DropDown затем обрабатывает TextChanged событие для предотвращения пользователя, изменяющего текст.

150
ответ дан Nam Bình 7 November 2019 в 07:35
поделиться

Можно ли изменить forecolor и цвет фона к системным цветам для включенного поля комбинированного списка, хотя это может смутить пользователей (почему это имеет, если они не могут изменить его), это будет выглядеть лучше.

1
ответ дан Tom Anderson 7 November 2019 в 07:35
поделиться

На самом деле, это довольно просто:

Private Sub combobox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles combobox1.KeyDown
    ' the following makes this the combobox read only    
    e.SuppressKeyPress = True    
End Sub
0
ответ дан 7 November 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: