Принуждение элемента управления NumericUpDown принимать только полномочия двух - PullRequest
1 голос
/ 17 июля 2011

Я предоставляю пользователю элемент управления NumericUpDown, чтобы он мог указать размер текстуры.Важно, чтобы эта текстура имела степень двух размеров (32, 64, 128 ...).

Я пытался заставить элемент управления отображать только эти степени двух, когда вы нажимаете вверх или внизКнопки (или нажимайте клавиши со стрелками) в случае ValueChanged без везения.Я также пытался использовать свойство Increment.Все решения, с которыми я столкнулся, либо слишком хакерские, либо имеют особый случай, когда он показывает недопустимые значения.

Есть ли простой способ (или, по крайней мере, не слишком сложный) для достижения такого поведения?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 17 июля 2011

Вы должны унаследовать класс UpDownBase.

1 голос
/ 17 июля 2011

Вы столкнетесь с проблемой в двухзначных числах. Если я хочу поставить 32, а вы видите 3, когда я печатаю, то ваша программа просто скажет мне, что я не прав. Подтвердите, когда отправляете свои данные.

0 голосов
/ 17 июля 2011

Я предлагаю использовать ComboBox, у вас будут выпадать номера, вы поддерживаете автозаполнение и в то же время избегаете проверки ввода пользователя, код вроде:

//generate your array.
List<string> twos = new List<string>();

int item = 2;
int max = int.MaxValue / 2;
while ((item = 2 * item) < max)
{
    twos.Add(item.ToString());
}

ComboBox comboBox1 = new ComboBox();

comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
comboBox1.FormattingEnabled = true;

//comboBox1.Items.Clear();
comboBox1.Items.AddRange(twos.ToArray());
comboBox1.AutoCompleteCustomSource.AddRange(twos.ToArray());

this.Controls.Add(comboBox1);
0 голосов
/ 17 июля 2011

Хм, ну, вы могли бы сделать свой собственный. Используя текстовое поле и пару графических блоков, вы можете настроить форму, которая устанавливает только степени двойки.

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