我知道如何用C ++创建程序,但对C#来说很新,所以请耐心等待,但我有一个问题,而且我的生活在google上找不到它,或者stackoverflow搜索(也许不知道一个很好的方式来表达它)。我的表单上有两个函数:NumericUpDown
和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);
}
}
答案 0 :(得分:2)
与C ++一样,C#是一种强类型语言。这意味着如果您尝试将int
传递给接受string
的函数,则会出现编译时错误,反之亦然。这就是你在这里发生的事情。
The simplest overload of the MessageBox.Show function接受一个string
参数,但您已将其传递给decimal
(StatBox.Value
的结果):
MessageBox.Show(StatBox.Value);
修复很简单:将decimal
转换为string
。所有.NET对象都提供ToString
成员函数,可用于获取对象的字符串表示形式。所以重写你的代码就像这样:
MessageBox.Show(StatBox.Value.ToString());
在调用此函数时,您甚至可以将多个子字符串连接在一起,就像使用C ++ string
类型和I / O流一样。例如,您可以编写此代码:
MessageBox.Show("The result is: " + StatBox.Value.ToString());
或使用String.Format
method,这有点类似于C printf
函数。然后,您可以指定standard或custom数字格式,并避免显式调用ToString
函数。例如,以下代码将以定点表示法显示上下控件中的数字,正好有两位小数:
MessageBox.Show(String.Format("The result is: {0:F2}", StatBox.Value.ToString()));
答案 1 :(得分: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!你会喜欢它。