1

我知道如何在 C++ 中创建程序,但对 C# 非常陌生,所以请耐心等待,但我有一个问题,我一生都无法在谷歌或 stackoverflow 搜索中找到它(也许不知道一个好方法措辞)。我的表单上有两个函数: ANumericUpDown和 a Button。单击按钮时,我想从中获取数据NumericUpDown,并将.Show()其放在消息框中。这是我目前拥有的。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void StatBox_ValueChanged(object sender, EventArgs e)
    {
        //decimal Stat = StatBox.Value;
        //string StatStr = Stat.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(StatBox.Value);
    }
}
4

2 回答 2

2

与 C++ 一样,C# 是一种强类型语言。这意味着如果您尝试将 a 传递int给接受 a 的函数,则会收到编译时错误string,反之亦然。这就是发生在你身上的事情。

MessageBox.Show 函数的最简单重载接受单个string参数,但您已向它传递了一个decimal(的结果StatBox.Value):

MessageBox.Show(StatBox.Value);

解决方法很简单:将 转换decimalstring. 所有 .NET 对象都提供了一个ToString成员函数,可用于获取对象的字符串表示形式。所以像这样重写你的代码:

MessageBox.Show(StatBox.Value.ToString());

调用此函数时,您甚至可以将多个子字符串连接在一起,就像使用 C++string类型和 I/O 流一样。例如,您可以编写以下代码:

MessageBox.Show("The result is: " + StatBox.Value.ToString());

或者使用String.Format方法,有点类似于Cprintf函数。然后,您可以指定标准自定义数字格式并避免ToString显式调用该函数。例如,以下代码将以定点表示法显示 up-down 控件中的数字,精确到小数点后两位:

MessageBox.Show(String.Format("The result is: {0:F2}", StatBox.Value.ToString()));
于 2013-04-12T23:37:04.180 回答
1

这应该为你做:

public partial class Form1 : Form
{
   public Form1()
   {
       InitializeComponent();
   }

   private void StatBox_ValueChanged(object sender, EventArgs e)
   {
       //decimal Stat = StatBox.Value;
       //string StatStr = Stat.ToString();
   }

   private void button1_Click(object sender, EventArgs e)
   {
       MessageBox.Show(StatBox.Value.ToString());
   }
}

由于您使用的MessageBox.Show()数据,因此您需要.ToString()StatBox.Value.

PS - 欢迎来到 SO!你会喜欢这里的。

于 2013-04-12T23:36:16.987 回答