權力我呈現給用戶一個NumericUpDown控件,所以他可以指定紋理的大小。這種紋理具有兩種尺寸的力量(32,64,128 ...)很重要。強制NumericUpDown控件只接受兩個
我試圖迫使控制提出兩個只有這個權力,只要你單擊向上或向下按鈕(或按箭頭鍵),在事件沒有的ValueChanged運氣。我也嘗試過使用Increment屬性。我自己遇到的所有解決方案要麼太冒險,要麼有特殊情況,顯示無效值。
有沒有一種簡單的方法(或至少不太靠譜)來實現這一行爲呢?
在此先感謝。
權力我呈現給用戶一個NumericUpDown控件,所以他可以指定紋理的大小。這種紋理具有兩種尺寸的力量(32,64,128 ...)很重要。強制NumericUpDown控件只接受兩個
我試圖迫使控制提出兩個只有這個權力,只要你單擊向上或向下按鈕(或按箭頭鍵),在事件沒有的ValueChanged運氣。我也嘗試過使用Increment屬性。我自己遇到的所有解決方案要麼太冒險,要麼有特殊情況,顯示無效值。
有沒有一種簡單的方法(或至少不太靠譜)來實現這一行爲呢?
在此先感謝。
你應該繼承UpDownBase
類。
你要在2+位數遇到了問題。如果我想要輸入32
,並且在輸入時看到3
,那麼您的程序只會告訴我我錯了。在提交數據時進行驗證。
這不是一個問題,因爲文本框部分是隻讀的。用戶只能使用上/下箭頭進行交互。 – Mario
嗯,好了,你可以自己製作。 使用文本框和幾個圖片框,您可以設置一個僅設置兩個冪的窗體。
不,不這樣做。做[這](http://stackoverflow.com/questions/6721742/forcing-a-numericupdown-control-to-only-accept-powers-of-two/6721761#6721761)。 –
我的建議是使用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);
這是我作爲計劃B的選項,但我更喜歡NumericUpDown替代方案。這可能很愚蠢,但我認爲這對用戶來說似乎是一個更優雅的選擇。不管怎麼說,還是要謝謝你! – Mario
我會看UpDownBase。製作一個可以在整個項目中重複使用的自定義控件可能很酷。 – Mario
我做了一個自定義的PowerOfTwoUpDown效果很好。這很容易。您只需要重寫UpButton(),DownButton()和UpdateEditText()。爲了使它像標準的NumericUpDown一樣,我也做了一個自定義的Value,Minimum和Maximum。它看起來不錯,做我想要的!謝謝! – Mario