简体   繁体   English

将时间选择器和复选框保存到文本文件

[英]saving time picker and check boxes to text file

Hi im new to c# and im trying to save 12 checkboxes to A TEXT file that is named after a date thats selected. 嗨我是c#的新手,我试图将12个复选框保存到以所选日期命名的文本文件。

i have got the check boxes to output but dont seem to have the file named after the date. 我有复选框输出,但似乎没有在日期后命名的文件。 I seem to be going the long way around this too. 我似乎也要走很远的路。 If any body nows any shorter routes or where im going wrong that would be great. 如果任何一个身体指出任何较短的路线或我出错的地方会很好。

    public void timepicker_ValueChanged(object sender, EventArgs e)
    {
        string date = timepicker.Value.ToString("dd-MM-yyyy");           
    }

    string amorpm = "";

    if (rb_am.Checked) 
    {
       am = rb_am.Text;
    }
    else if (rb_pm.Checked) 
    {
       pm = rb_pm.Text;
    }

    SteamWriter am = File.CreateText("seats_file.txt");
    am.WriteLine ("am morning run");
    am.close;

    SteamWrite pm = File.CreateText("seats_file.txt");
    pm.WriteLne ("pm afternoon nrun");
    pm.Close;

    public void btn_saveseats_Click(object sender, EventArgs e)
    {
        {
           String date = timepicker.Value.ToString("dd-mm-yyyy");
          //String fileName = String.Format("{0}File.txt", date);

        try

            if (File.Exists(date))

            {
               (MessageBox.Show("Warning: file already exists. Contents will be replaced - do you want to continue?", "File Demo", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
                     MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.Yes)
                {

                    //write lines of text to file

                    StreamWriter date = File.CreateText(date);
                    date.WriteLine(date);
                    date.Close();

                    if (cbseat1.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat1 = File.CreateText("seats_file.txt");
                        seat1.WriteLine("seat 1 taken");
                        seat1.Close();
                    }

                    if (cbseat2.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat2 = File.AppendText("seats_file.txt");
                        seat2.WriteLine("seat 2 taken.Text");
                        seat2.Close();
                    }

                    if (cbseat3.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat3 = File.AppendText("seats_file.txt");
                        seat3.WriteLine("seat 3 taken");
                        seat3.Close();
                    }

                    if (cbseat4.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat4 = File.AppendText("seats_file.txt");
                        seat4.WriteLine("seat 4 taken");
                        seat4.Close();
                    }

                    if (cbseat5.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat5 = File.AppendText("seats_file.txt");
                        seat5.WriteLine("seat 5 taken");
                        seat5.Close();
                    }

                    if (cbseat6.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat6 = File.AppendText("seats_file.txt");
                        seat6.WriteLine("seat 6 taken");
                        seat6.Close();
                    }

                    if (cbseat7.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat7 = File.AppendText("seats_file.txt");
                        seat7.WriteLine("seat 7 taken");
                        seat7.Close();
                    }

                    if (cbseat8.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat8 = File.AppendText("seats_file.txt");
                        seat8.WriteLine("seat 8 taken");
                        seat8.Close();
                    }

                    if (cbseat9.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat9 = File.AppendText("seats_file.txt");
                        seat9.WriteLine("seat 9 taken");
                        seat9.Close();
                    }

                    if (cbseat10.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat10 = File.AppendText("seats_file.txt");
                        seat10.WriteLine("seat 10 taken");
                        seat10.Close();
                    }

                    if (cbseat11.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat11 = File.AppendText("seats_file.txt");
                        seat11.WriteLine("seat 11 taken");
                        seat11.Close();
                    }

                    if (cbseat12.Checked)
                    {
                        // Do something when CheckBox is checked
                        StreamWriter seat12 = File.AppendText("seats_file.txt");
                        seat12.WriteLine("seat 12 taken");
                        seat12.Close();
                    }

                    MessageBox.Show("saved");

                }
            }
        }
    }
}

} }

Yes you are going in wrong direction and need to rewrite your code, here is much better version of your code: 是的,你的方向错误,需要重写你的代码,这里有更好的代码版本:

public void btn_saveseats_Click(object sender, EventArgs e){

    String date = timepicker.Value.ToString("dd-mm-yyyy");
    String fileName = String.Format("{0}File.txt", date);

    using (StreamWriter writer = new StreamWriter(fileName)){
        writer.WriteLine(date);
        if(cbseat1.Checked)
            writer.WriteLine(cbseat1.Text);
        if(cbseat2.Checked)
            writer.WriteLine(cbseat2.Text);
        if(cbseat3.Checked)
            writer.WriteLine(cbseat3.Text);
        if(cbseat4.Checked)
            writer.WriteLine(cbseat4.Text);
        if(cbseat5.Checked)
            writer.WriteLine(cbseat5.Text);
        if(cbseat6.Checked)
            writer.WriteLine(cbseat6.Text);
        if(cbseat7.Checked)
            writer.WriteLine(cbseat7.Text);
        if(cbseat8.Checked)
            writer.WriteLine(cbseat8.Text);
        if(cbseat9.Checked)
            writer.WriteLine(cbseat9.Text);
        if(cbseat10.Checked)
            writer.WriteLine(cbseat10.Text);
        if(cbseat11.Checked)
            writer.WriteLine(cbseat11.Text);
        if(cbseat12.Checked)
            writer.WriteLine(cbseat12.Text);
    }
    MessageBox.Show("saved");
}

In example, I wrote Text of checkboxes that you can replace with any other string. 在示例中,我编写了可以替换为任何其他字符串的复选框文本
The using block disposes off the instance after writing to file so you don't need to explicitly call writer.Dispose(); 写入文件后, using块处理掉实例,因此您不需要显式调用writer.Dispose(); .

Better approach: 更好的方法:

Wrap your checkboxes in any container control like Panel or GroupBox then use its Controls property to enumerate its child controls, check if its type is Checkbox , if it is then check whether it is checked or not. 将您的复选框包装在任何容器控件(如PanelGroupBox)中,然后使用其Controls属性枚举其子控件,检查其类型是否为Checkbox ,如果是,则检查是否已选中。 You can use this.Controls if your checkboxes are direct children of Form : 如果您的复选框是Form的直接子项,则可以使用this.Controls

foreach(Control ctrl in pnl.Controls){
    if(ctrl is Checkbox){
        Checkbox chk = ctrl as Checkbox;
        if(chk.Checked){
            switch(chk.Name){
                case "chkSeat1":
                    writer.WriteLine(chk.Text);
                    break;
                case "chkSeat2":
                    writer.WriteLine(chk.Text);
                    break;
                case "chkSeat3":
                    writer.WriteLine(chk.Text);
                    break;

                ...
            }
        }
    }
}

Something that might help you do the heavy lifting faster: 可能有助于您更快地完成繁重工作的东西:

    public void WriteCBValuesToFile()
    {
        foreach (Control control in this.Controls) // 'this' is the form... In your case it might be a groupBox, panel, etc.
        {
            if (control is CheckBox)
            {
                CheckBox cb = (CheckBox)control;

                if (cb.Name == "Whatever")
                { 
                    //Whatever...
                }
            }
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM