簡體   English   中英

在字典中為NumerictUpDown定義最大值

[英]Define maximum for NumerictUpDown in a dictionary

所以我有一本字典,里面有一些叫做controlDict控件。 但是,如果我想像這樣設置NumericUpDown控件的最大值:

controlDict.Add("amountNum" + i.ToString(), new NumericUpDown());
            controlDict["amountNum" + i.ToString()].Location = new Point(60, 42);
controlDict["amountNum" + i.ToString()].Maximum = new decimal(new int[] {
            -1,
            -1,
            -1,
            0});

它給了我這個錯誤:

“控件”不包含“最大”的定義,找不到可以接受類型為“控件”的第一個參數的擴展方法“最大”(您是否缺少using指令或程序集引用?)

我該如何解決?

您應該將控件轉換為NumericUpDown然后為其屬性分配值:

var numeric = (NumericUpDown)controlDict["amountNum" + i.ToString()];
numeric.Maximum = 100;

為什么controlDict["amountNum" + i.ToString()].Location無需轉換即可工作?

因為結果是Control ,並且控件類具有Location屬性。 以及所有控件,包括從Control繼承的NumericUpDown

字典中的項目屬於Control類型。 當您使用controlDict["key"]從字典中獲取一項時,結果為Control類型。 因此,您可以訪問Control類的所有屬性。 當您知道結果控件是特定控件類型時,要訪問特定控件屬性,應將其強制轉換為特定控件類型。

這是因為controlDict [“ amountNum” + i.ToString()]是Control實例。 嘗試這個:

(controlDict["amountNum" + i.ToString()] as NumericUpDown).Maximum = new decimal(new int[] {
        -1,
        -1,
        -1,
        0});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM