Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 距离转换器_C#_Winforms - Fatal编程技术网

C# 距离转换器

C# 距离转换器,c#,winforms,C#,Winforms,我正在为距离转换器开发一个C#Forms应用程序,这是我现在拥有的代码,我需要声明toDistance,但我不太确定如何用距离转换的结果声明它。如果可以的话请帮忙,我对这方面还不太熟悉 private void btnConvert_Click(object sender, EventArgs e) { float fromDistance; float toDistance; fromDistance = int.Parse(distanceinput.Text);

我正在为距离转换器开发一个C#Forms应用程序,这是我现在拥有的代码,我需要声明toDistance,但我不太确定如何用距离转换的结果声明它。如果可以的话请帮忙,我对这方面还不太熟悉

private void btnConvert_Click(object sender, EventArgs e)
{
    float fromDistance;
    float toDistance;

    fromDistance = int.Parse(distanceinput.Text);
    string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
    string measureOutput = toList.Items[toList.SelectedIndex].ToString();
    distanceOutput.Text = toDistance.ToString();

    switch (measureInput)
    {
        case "Yard":
            switch (measureOutput)
            {
                case "Yard":
                    toDistance = fromDistance;
                    break;
                case "Foot":
                    toDistance = fromDistance * 3;
                    break;
                case "Inches":
                    toDistance = fromDistance * 3 * 12;
                    break;
            }
            break;
        case "Foot":
            switch (measureOutput)
            {
                case "Foot":
                    toDistance = fromDistance;
                    break;
                case "Yard":
                    toDistance = fromDistance / 3;
                    break;
                case "Inch":
                    toDistance = fromDistance * 12;
                    break;
            }
            break;
        case "Inch":
            switch (measureOutput)
            {
                case "Inch":
                    toDistance = fromDistance;
                    break;
                case "Foot":
                    toDistance = fromDistance / 12;
                    break;
                case "Yards":
                    toDistance = fromDistance / (3 * 12);
                    break;
            }
            break;
    }
}

是否尝试移动距离输出。Text=toDistance.ToString();到函数的末尾

 private void btnConvert_Click(object sender, EventArgs e)
        {
            float fromDistance;
            float toDistance;

            fromDistance = int.Parse(distanceinput.Text);
            string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
            string measureOutput = toList.Items[toList.SelectedIndex].ToString();


            switch (measureInput)
            {
                case "Yard":
                    switch (measureOutput)
                    {
                        case "Yard":
                            toDistance = fromDistance;
                            break;
                        case "Foot":
                            toDistance = fromDistance * 3;
                            break;
                        case "Inches":
                            toDistance = fromDistance * 3 * 12;
                            break;
                    }
                    break;
                case "Foot":
                    switch (measureOutput)
                    {
                        case "Foot":
                            toDistance = fromDistance;
                            break;
                        case "Yard":
                            toDistance = fromDistance / 3;
                            break;
                        case "Inch":
                            toDistance = fromDistance * 12;
                            break;
                    }
                    break;
                case "Inch":
                    switch (measureOutput)
                    {
                        case "Inch":
                            toDistance = fromDistance;
                            break;
                        case "Foot":
                            toDistance = fromDistance / 12;
                            break;
                        case "Yards":
                            toDistance = fromDistance / (3 * 12);
                            break;
                    }
                    break;
            }
    distanceOutput.Text = toDistance.ToString();
        }

是否尝试移动距离输出。Text=toDistance.ToString();到函数的末尾

 private void btnConvert_Click(object sender, EventArgs e)
        {
            float fromDistance;
            float toDistance;

            fromDistance = int.Parse(distanceinput.Text);
            string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
            string measureOutput = toList.Items[toList.SelectedIndex].ToString();


            switch (measureInput)
            {
                case "Yard":
                    switch (measureOutput)
                    {
                        case "Yard":
                            toDistance = fromDistance;
                            break;
                        case "Foot":
                            toDistance = fromDistance * 3;
                            break;
                        case "Inches":
                            toDistance = fromDistance * 3 * 12;
                            break;
                    }
                    break;
                case "Foot":
                    switch (measureOutput)
                    {
                        case "Foot":
                            toDistance = fromDistance;
                            break;
                        case "Yard":
                            toDistance = fromDistance / 3;
                            break;
                        case "Inch":
                            toDistance = fromDistance * 12;
                            break;
                    }
                    break;
                case "Inch":
                    switch (measureOutput)
                    {
                        case "Inch":
                            toDistance = fromDistance;
                            break;
                        case "Foot":
                            toDistance = fromDistance / 12;
                            break;
                        case "Yards":
                            toDistance = fromDistance / (3 * 12);
                            break;
                    }
                    break;
            }
    distanceOutput.Text = toDistance.ToString();
        }
这一行:

distanceOutput.Text = toDistance.ToString();
不是的意思是:“控制距离输出的文本应始终跟随toDistance的“ToString”

相反,它的意思是“现在就做”(如:执行该行的那一刻)。它没有关系

因此,解决方案是将该行移动到(外部)switch语句之后,在该语句中计算toDistance

但是,您可能需要对其进行初始化(
float-toDistance=0f;
),否则编译器会抱怨您试图使用未初始化的变量。它看不出您在
开关中使用了所有可能的值。

此行:

distanceOutput.Text = toDistance.ToString();
不是的意思是:“控制距离输出的文本应始终跟随toDistance的“ToString”

相反,它的意思是“现在就做”(如:执行该行的那一刻)。它没有关系

因此,解决方案是将该行移动到(外部)switch语句之后,在该语句中计算toDistance


但是,您可能需要对其进行初始化(
float-toDistance=0f;
),否则编译器会抱怨您试图使用未初始化的变量。它看不出您已经使用了
开关中所有可能的值。

您需要将最终赋值语句移动到开关后

此外,我不会使用嵌套开关。它很难读取和调试。我会将输入转换为最小的可能单位(在您的情况下,英寸)。然后,我将最小单位测量值转换为用户要求的任何输出单位:

float inputInches = 0;

//Convert input to inches
switch(measureInput)
{
    case "Yard":
        inputInches = fromDistance * 3 * 12;
        break;
    case "Foot":
        inputInches = fromDistance * 12;
        break;
    default:
        inputInches = fromDistance;
        break;
}

//Convert output to desired format
switch(measureOutput)
{
    case "Yard":
        toDistance = inputInches / 3 / 12;
        break;
    case "Foot":
        toDistance = inputInches / 12;
        break;
    default:
        toDistance = inputInches;
        break;
}

distanceOutput.Text = toDistance.ToString();
需要考虑的其他一些事项:

  • 文本比较很混乱。考虑使用输入类型创建<代码> EnUM <代码>(<代码>英寸,<代码>英尺,<代码>码> /代码>等。
  • 按钮
    事件中的编码也很混乱。考虑将此转换代码移到自己的方法。

切换后,您需要将最终分配声明移至

此外,我不会使用嵌套开关。它很难读取和调试。我会将输入转换为最小的可能单位(在您的情况下,英寸)。然后,我将最小单位测量值转换为用户要求的任何输出单位:

float inputInches = 0;

//Convert input to inches
switch(measureInput)
{
    case "Yard":
        inputInches = fromDistance * 3 * 12;
        break;
    case "Foot":
        inputInches = fromDistance * 12;
        break;
    default:
        inputInches = fromDistance;
        break;
}

//Convert output to desired format
switch(measureOutput)
{
    case "Yard":
        toDistance = inputInches / 3 / 12;
        break;
    case "Foot":
        toDistance = inputInches / 12;
        break;
    default:
        toDistance = inputInches;
        break;
}

distanceOutput.Text = toDistance.ToString();
需要考虑的其他一些事项:

  • 文本比较很混乱。考虑使用输入类型创建<代码> EnUM <代码>(<代码>英寸,<代码>英尺,<代码>码> /代码>等。
  • 按钮
    事件中的编码也很混乱。考虑将此转换代码移到自己的方法。

我第一次看到嵌套开关!!有点伤眼睛我可能误解了你的意图,但是你不想要行距离输出吗;在switch语句之后?表单的其余部分看起来如何?为什么所有这些都在事件函数中,而不是将其移动到单独的函数中,并在单击事件中调用这些函数?在窗体中添加一个控件,并将其称为
output
results
toDistTextBox
。然后在设置
toDistance
的值之后,再设置
输出
文本框的
文本
属性。我第一次看到嵌套开关!!有点伤眼睛我可能误解了你的意图,但是你不想要行距离输出吗;在switch语句之后?表单的其余部分看起来如何?为什么所有这些都在事件函数中,而不是将其移动到单独的函数中,并在单击事件中调用这些函数?在窗体中添加一个控件,并将其称为
output
results
toDistTextBox
。然后,在设置
toDistance
的值之后,然后设置
output
textbox的
Text
属性。我这样做了,toDistance仍然存在识别问题Di这样做了,toDistance仍然存在识别问题