是否有更简单的方法在Visual Studio中显示和使用INT?

时间:2015-03-11 06:39:06

标签: c# visual-studio-2013

我使用visual studio创建了一个RPG角色创建者。我想显示统计奖金并使用它们计算损坏和命中数字等内容。但是,我发现显示它们的唯一方法是使用文本框,这意味着每当我想要数学时,我必须将文本框中的字符串转换为int,进行数学运算,然后将其转换回来进入一个字符串来显示它。

有没有一种更简单的方法可以做到这一点,我只是错过了?没有"数字框"或类似的东西?

4 个答案:

答案 0 :(得分:3)

拆分用户界面和数据。如果您想对此主题进行其他研究:用户界面通常称为视图,数据为模型

将您的统计信息保存在原生数据类型的单独类中。也就是说,你有int的力量,灵巧等等。使用只读属性来获取派生值,例如护甲等等。

表单应该做的唯一工作是显示这些值,如果用户更改数据,更新数据类。这样做的另一个好处是可以保持代码的有序性:您的表单只包含与用户交互相关的代码,而所有"规则"用于计算值的数据在您的数据类中。

答案 1 :(得分:1)

有一个“数字框”。它被称为NumericUpDown控件。值类型为Decimal,遗憾的是,如果您在doubleint进行计算,则仍需要来回投射。你可以把小数点放在你想要的地方,这可能是也可能不是一个特征......用户不能移动小数点。

答案 2 :(得分:0)

海因兹的回答很好。

OTOH,如果你想要,你可以创建一个相反的子类,即将数据和视图绑在一起..

这是一个Label子类,它具有int属性和Add方法。您可以使用它或使用Value属性进行计算,当然,如果需要,您可以添加更多方法..

您可以通过任何方式设置样式,包括Images;我选择了一种简单的风格,见下文..:

class IntLabel : Label
{
    int val;
    public int Value 
    {
        get { return val; }
        set { val = value; Text = val.ToString(Format ); }
    }
    public string Format { get; set; }


    public IntLabel()
    {
        Font = new Font("Consolas", 15f);
        BackColor = Color.Brown;
        ForeColor = Color.AntiqueWhite;
        TextAlign = ContentAlignment.MiddleCenter;
        //..
    }

    public IntLabel(int val, string name) : base()
    { 
        Value = Value; 
        Name = name;
    }

    protected override void OnLayout(LayoutEventArgs levent)
    {
        base.OnLayout(levent);
        AutoSize = false;
        Size = new System.Drawing.Size(200, 30);
    }

    public int Add(int n)
    {
        Value += n;
        return Value;
    }
}

然后,您可以使用任一方式增加值:

 intLabel1.Value += 111;
 intLabel1.Add(111);

设置

 intLabel1.Format = "Score: #####0";

这将导致:

enter image description here

答案 3 :(得分:0)

不,你不能显示数字,只显示文字。但你可以做的是将你的统计数据存储为数字,只将它们转换为文本以显示它们,使用ToString这很容易。如果您已存储数字,例如在数据库中,您可以在需要进行计算时从数据库中检索它们,因此您不必担心将它们从文本转换回数字。如果你需要的话,并不难以做到这一点!