Вопрос

Totally new to this. Depending on which event button I click I need to write to the appropriate text file. However, the input data writes to the same text file. How do I specify the appropriate text file it writes to and is saved.

The coding, identical apart from the name of the text file, I'm currently using is:

private void btnItemAdd_Click(object sender, EventArgs e)
{
    string sItem;
    string sNumber;

    if (rdoDrinks.Checked == false && rdoConfectionary.Checked == false)
    {
        //Message to remind user to select category
        MessageBox.Show("Please select a category");
        txtItem.Focus();
    }
    {
        {
            if ((rdoDrinks.Checked == true) && (txtItem.Text != "") && (txtItemNumber.Text == ""))

                //Message to remind user to enter a number
                MessageBox.Show("Please input a number");
                txtItemNumber.Focus();

            if ((txtItem.Text != "") && (txtItemNumber.Text != ""))
            {
                //add Item to end of list
                lstItems.Items.Add(string.Format("{0, -15} {1, -20}", txtItem.Text, txtItemNumber.Text));
                txtCount.Text = lstItems.Items.Count.ToString();
                //set focus to the text box
                txtItem.Focus();

                StreamWriter sw = File.AppendText("Drinks.txt");
                {
                    sItem = txtItem.Text;
                    sw.WriteLine(sItem);

                    sNumber = txtItemNumber.Text;
                    sw.WriteLine(sNumber);

                }

                MessageBox.Show("Details have been saved");
                txtItem.Clear();
                txtItemNumber.Clear();

                sw.Close();
            }
            else if ((rdoConfectionary.Checked == true) && (txtItem.Text != "") && (txtItemNumber.Text == ""))
                //Message to remind user to enter a number
                MessageBox.Show("Please input a number");
                txtItemNumber.Focus();

            if ((txtItem.Text != "") && (txtItemNumber.Text != ""))
            {
                //add Item to end of list
                lstItems.Items.Add(string.Format("{0, -15} {1, -20}", txtItem.Text, txtItemNumber.Text));
                txtCount.Text = lstItems.Items.Count.ToString();
                //set focus to the text box
                txtItem.Focus();

                StreamWriter sw = File.AppendText("Confectionary.txt");
                {
                    sItem = txtItem.Text;
                    sw.WriteLine(sItem);

                    sNumber = txtItemNumber.Text;
                    sw.WriteLine(sNumber);
                }

                MessageBox.Show("Details have been saved");
                txtItem.Clear();
                txtItemNumber.Clear();

                sw.Close();
            }
        }
    }
}
Это было полезно?

Решение

You have several issues:

  1. You are missing an else after the first if.

  2. The code below can never end up being true.

The two if statement collide (the txtItemNumber.Text comparison is the problem). Hence you will never end up writing to Drinks.txt:

if ((rdoDrinks.Checked == true) && (txtItem.Text != "") && (txtItemNumber.Text == ""))

...

if ((txtItem.Text != "") && (txtItemNumber.Text != ""))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top