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

时间:2011-05-19 10:10:41

标签: 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.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);

    }

这就是窗口的样子: Active Form

这些操作是什么,当你在textBox1上插入一个值(窗口中间左边的红色),然后从右边的按钮中选择测量,这会将引入的值转换为千米和存储它在变量X中,并将选定的测量值写在textBox1右侧的标签上。

当你按下“转换器”按钮时,(现在)我希望textBox2显示X,但是,这只有当我按下“metros”或“pés”时,如果我选择其中一个其他按钮转换它什么都不做......

有人知道出了什么问题吗?

另外,附带问题,如何从组合框中选择项目?

1 个答案:

答案 0 :(得分:2)

首先,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
}

有些按钮可能无法正常工作,因为事件处理程序方法与事件之间的链接已被破坏。您应该打开设计器并确保每个按钮都分配了Click处理程序。

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

相关问题