2014-10-18 25 views
-3

我對C#很陌生(使用Visual Studio),並且在窗體上使用了幾個numericUpDown,它們的數字範圍是8到15.如何在更改之前註冊numericUpDown的值?

當您在這些numericUpDown中更改值時,將值會產生積分成本,降低價值會增加積分......隨着成本的不同,你得到的更高,我試圖在改變之前註冊價值,不幸的是我不知道如何處理這個問題。

任何人都可以指出我正確的方向嗎?

+0

添加一些代碼示例並標記你引用的技術。 'C#'是不夠的 - 它是ASP.NET,WPF,窗體還是... – TarasB 2014-10-18 16:57:42

+0

@TarasB,我已經使用了這個,它是一個'窗體控件',需要將它標記爲Windows窗體。 – 2014-10-18 17:35:59

+0

MSDN鏈接 - http://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown(v=vs.110).aspx – 2014-10-18 17:43:35

回答

0
private int numericValue = 8; 

private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
{ 
    //numericValue holds the before value 
    ... 
    numericValue = (int)numericUpDown1.Value; 
} 
+0

這會給出新值,而不是更改前的值。 – 26071986 2014-10-18 21:11:45

+0

@ 26071986你太過簡單了。該代碼賦予之前的價值。當我們輸入* numericUpDown1_ValueChanged *函數時,* numericValue * **是**之前的值。我們使用它並在最後* numericValue =(int)numericUpDown1.Value; *我們改變它。 – 2014-10-18 21:59:30

0

這裏是我會怎麼做,這是比較簡單的,應該工作得很好,沒有任何問題:

//First, store your values in an array, just a small one 
int[] values = {0, 0}; 

//Then, when the value of the NumericUpDown is changed, move the values around the array 
private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
{ 
    values[0] = values[1]; 
    values[1] = numericUpDown1.Value; 
} 

當第一次啓動該程序,該陣列將被初始化爲0, 0和你的NumericUpDown應具有0的值。讓我們來看看當我們改變NumericUpDown的值時會發生什麼。

在我們改變數值之前,數組的值是0, 0。當我們改變它時,數組get的移動到索引0的索引1的最後0,並且NumericUpDown get的當前值移動到索引1。假設我們將該值更改爲55,則陣列的值現在爲0, 55。假設我們再次將其更改爲68.陣列的值現在爲55, 68。數組的舊值始終存儲在數組的索引0處。

如果您希望NumericUpDown具有與0不同的默認值,只需更改該數組的初始值,以反映NumericUpDown的默認值。假如你想要默認值爲100,那麼該陣列應該初始化爲:

int[] values = {0, 100}; 
+0

當然,我的答案的另一個*複製粘貼* – 2014-10-20 20:27:01

相關問題