我向用户呈现NumericUpDown控件,以便他可以指定纹理的大小。重要的是这种纹理具有两种尺寸(32,64,128 ......)的力量。
我试图在没有运气的情况下在ValueChanged事件中单击向上或向下按钮(或按箭头键)时强制控件只显示两个幂。我也尝试过使用Increment属性。我自己遇到的所有解决方案要么过于hacky,要么具有显示无效值的特殊情况。
是否有一种简单的方法(或者至少不是太棘手)来实现这种行为?
提前致谢。
答案 0 :(得分:2)
您应该继承UpDownBase
类。
答案 1 :(得分:1)
你将遇到2位数字的问题。如果我想放32
并且您在我输入时看到3
,那么您的程序会告诉我我错了。在提交数据时进行验证。
答案 2 :(得分:0)
我的建议是使用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);
答案 3 :(得分:-1)