Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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#_Visual Studio 2008 - Fatal编程技术网

C# 我的转换器应用程序中的事件处理程序不工作

C# 我的转换器应用程序中的事件处理程序不工作,c#,visual-studio-2008,C#,Visual Studio 2008,这是我目前掌握的代码: public partial class Form2 : Form { public Double X; public Form2() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { if(textBox1.Text != "") X = Convert

这是我目前掌握的代码:

public partial class Form2 : Form
{
    public Double X;

    public Form2()
    {
        InitializeComponent();
    }


    private void button2_Click(object sender, EventArgs e)
    {
        if(textBox1.Text != "")
        X = Convert.ToDouble(textBox1.Text);
        X *= 0.001;
        label3.Text = "metros";
    }


    private void button3_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
        X = Convert.ToDouble(textBox1.Text);
        X *= 0.62;
        label3.Text = "milhas";
    }

    private void button4_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
        X = Convert.ToDouble(textBox1.Text);
        label3.Text = "quilómetros";
    }

    private void button5_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
        X = Convert.ToDouble(textBox1.Text);
        X *= 3280,84;
        label3.Text = "pés";
    }

    private void button6_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
        X = Convert.ToDouble(textBox1.Text);
        X *= 0.17998560115190784737;
        label3.Text = "léguas";
    }

    private void button1_Click(object sender, EventArgs e)
    {

        textBox2.Text = Convert.ToString(X);

    }
这是窗口的外观:

它们的作用是,当您在textBox1上插入一个值(窗口左中的红色值),然后从右侧的按钮中选择测量值,这将把引入的值转换为公里数,并将其存储在变量X中,并将所选测量值写入textBox1右侧的标签上

当你按下转换按钮时,现在我希望textBox2显示X,然而,这只在我按下metros或pés时起作用,如果我选择其他按钮之一进行转换,它将什么也不做

有人知道怎么回事吗

还有一个附带问题,如何从组合框中选择项?

首先,如果满足条件,if语句只执行下一个语句:

if(textBox1.Text != "")
X = Convert.ToDouble(textBox1.Text);  // only run if 'if' is true
X *= 0.001;                           // always run
label3.Text = "metros";               // always run
if与下一行相关联。如果希望以下所有代码都与If关联,则需要打开一个块:

if(textBox1.Text != "")
{
   X = Convert.ToDouble(textBox1.Text);
   X *= 0.001;
   label3.Text = "metros";
}
为了防止出现这种情况,我建议对单行if语句采用一致的样式:

if (something) SomeStatement(); // same line

if (something)
    SomeStatement(); // indented

if (something)
{
    SomeStatement(); // single statement block
}
可能是因为事件处理程序方法和事件之间的链接已断开,所以某些按钮无法工作。您应该打开设计器并确保每个按钮都指定了一个单击处理程序


关于问题的组合框部分:ComboBox.SelectedItem允许您获取或设置所选项目。或者,您可以使用ComboBox.SelectedIndex获取或设置所选项目的索引。

这是一个常见问题。有些人总是使用大括号来防止它,即使是单行语句。就我个人而言,我把一行语句放在if的同一行。@Madcowe如果你缩进块,那么它会更清晰。没有缩进是发生了什么的一个明显迹象。顺便说一句,VS将主要为您完成这项工作,详细信息可在工具|选项|文本编辑器| C下自定义。@Madcowe:检查事件处理程序是否绑定到属性窗口的事件部分的按钮。@Madcowe:好的,单击一个不起作用的按钮,转到属性窗口。您应该会看到一个小图标,看起来像“事件”的闪电工具提示-单击该图标。向下滚动至单击事件。确保它旁边列出的方法是单击按钮时要运行的方法。@Madcowe我还认为有更好的方法来测试像if这样的空文本!String.isNullOrEmptyTextBox1.Text,如果{!Char.IsDigite.KeyChar e.handled=true;},则将o TextBox1置于按键事件上