gpt4 book ai didi

c# - 无法隐式转换字符串 - C#

转载 作者:行者123 更新时间:2023-11-30 19:24:05 24 4
gpt4 key购买 nike

我正在使用 C# 和 Win Forms 使用 VS 2012 构建非常基本的 BMI 计算器,而且我对 C# 还很陌生。我遵循了一些示例,这段代码应该可以工作,但是当运行代码时,我遇到了这些错误。

Error   3   Argument 1: cannot convert from 'System.Windows.Forms.TextBox' to 'string'  c:\users\dell\documents\visual studio 2012\Projects\bmi_calc\bmi_calc\Form1.cs  44  31  bmi_calc
Error 5 Argument 1: cannot convert from 'System.Windows.Forms.TextBox' to 'string' c:\users\dell\documents\visual studio 2012\Projects\bmi_calc\bmi_calc\Form1.cs 45 31 bmi_calc
Error 1 Cannot implicitly convert type 'string' to 'System.Windows.Forms.TextBox' c:\users\dell\documents\visual studio 2012\Projects\bmi_calc\bmi_calc\Form1.cs 39 25 bmi_calc
Error 2 The best overloaded method match for 'double.Parse(string)' has some invalid arguments c:\users\dell\documents\visual studio 2012\Projects\bmi_calc\bmi_calc\Form1.cs 44 17 bmi_calc
Error 4 The best overloaded method match for 'double.Parse(string)' has some invalid arguments c:\users\dell\documents\visual studio 2012\Projects\bmi_calc\bmi_calc\Form1.cs 45 17 bmi_calc

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace bmi_calc
{
public partial class Form1 : Form
{
double v;
double t;
double r;


public Form1()
{
InitializeComponent();
}

private void textBox2_TextChanged(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{
txtTezina.Clear(); //Btn that resets height and weight field values.
txtVisina.Clear();
txtBmiRez = "";
}

private void button1_Click(object sender, EventArgs e)
{
v = Double.Parse (txtVisina);
t = Double.Parse (txtTezina);

r = t / (v * v);

txtBmiRez.Text = String.Format("{0:f}", r);

}

private void button3_Click(object sender, EventArgs e)
{
Application.Exit(); // Close app
}

}
}

如果有人能向我解释这一点,我将永远感激不已。

最佳答案

txtVisinatxtTezina 都是TextBox 对象,而不是其中包含的字符串。您需要使用来自这些对象的 .Text 属性来访问用户界面中的字符串值。

例如:

v = Double.Parse (txtVisina.Text);
t = Double.Parse (txtTezina.Text);

和:

txtBmiRez.Text = "";

有趣的是,您对 txtBmiRez 的第二次使用实际上是正确的。

当谈到解析 double (或字符串中的任何对象)时,还建议处理任何潜在的错误,这可以通过 TryParse 完成。如果字符串不是有效数字,Parse 将抛出异常,而 TryParse 将返回 false。例如,将您的 Click 方法更改为类似这样的方法是有利的,并且会减少任何崩溃的可能性:

private void button1_Click(object sender, EventArgs e)
{
if(Double.TryParse (txtVisina.Text, out v) &&
Double.TryParse (txtTezina.Text, out t)) {
r = t / (v * v);
txtBmiRez.Text = String.Format("{0:f}", r);
} else {
// Handle failure to parse
MessageBox.Show("Failed to parse text to number.");
}
}

关于c# - 无法隐式转换字符串 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com