我该怎么做才能使我的代码工作

时间:2016-03-25 14:24:00

标签: c# checkbox combobox streamwriter

我有4个错误,我正在处理我的保存按钮,如果我可以修复它,它只会保存用户想要的所选项目

这不是所有代码只是我遇到问题的代码。这个程序适用于冰淇淋应用,有2个组合框和3个复选框

我提出了错误的地方

  private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();

        if (sfd.ShowDialog() == DialogResult.OK)
        {
            StreamWriter sw = new StreamWriter(
                                            new FileStream(sfd.FileName,
                                                            FileMode.Create,
                                                            FileAccess.Write)
                                                            );
            if(flavorBox) // i have an error right here (Cannot implicitly convert type 'System.Windows.Forms.ComboBox' to 'boolean)

            {
                sw.WriteLine(flavorBox.SelectedItem);

            }
            else(syrupBox) //syays i need semecolons right here for some reason
            {
                sw.WriteLine(syrupBox.SelectedItem);


            }
            if (Nuts.Checked)
            {
                this.Tag = "checked";
                sw.WriteLine(Nuts);

            }
            else(Cherries.Checked) //says i need semicolons here to i dont know why
            {
                this.Tag = "checked";
                sw.WriteLine(Cherries);

            }
            if(Sprinkles.Checked)
            {
                this.Tag = "checked";
                sw.WriteLine(Sprinkles);
            }
            sw.Close();
        }


    }

这是我的第4个错误

       private void closeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult result = MessageBox.Show("Are you sure you want to send the data back?",
             "Data Sender",
             MessageBoxButtons.YesNo,
             MessageBoxIcon.Warning);



        if (result == DialogResult.No)
        {
            e.Cancel() = true;  //ITS ASKED ME AM I MISSING A DIRECTIVE OR ASSEMBLY REFRENCE (FOR CANCEL)
        }

3 个答案:

答案 0 :(得分:2)

在if-else中只有if应该有条件,而else不应该有。使用else if语句显式定义条件。

if (Nuts.Checked)
{
        this.Tag = "checked";
        sw.WriteLine(Nuts);
}
else if(Cherries.Checked)
{
    this.Tag = "checked";
    sw.WriteLine(Cherries);

}
else if(Sprinkles.Checked)
{
    this.Tag = "checked";
    sw.WriteLine(Sprinkles);
}

Flavorbox是一个文本框,所以通过if(flavorbox)来检查flavorbox是否等于true或false。这是一个文本框,所以这是不可能的。您可能只需更改香精盒即可。请尝试以下方法:

if(!String.IsNullOrEmpty(flavorbox.Text)) {
    sw.WriteLine(flavorBox.SelectedItem);
}

答案 1 :(得分:0)

1。关于

if(flavorBox)
你正在检查什么?

关于:

else(syrupBox)else(Cherries.Checked)

你做不到else(something)。 你可以做else if(something) 因为else是所有其他选项。 所以将它们改为: else if(syrupBox)else if(Cherries.Checked)

关于取消的

2。: 你想做什么?

当您在对话框中单击否时,您想要使用e.cancel完成什么?

答案 2 :(得分:0)

对于第四个错误,请注意EventArgs.Cancel是属性,而不是方法。删除括号:

e.Cancel = true;