c#使用system.io保存标签;

时间:2011-11-21 18:13:01

标签: c# winforms

我有以下代码。我想我已经非常接近我所需要的了。在startout有一个主选项卡(不包含tb,tb1,tb2和tb3。一旦我点击按钮,就会生成一个包含tb,tb1,tb2,tb3的选项卡。

tb,tb1,tb2和tb3显示不存在的错误。我根本无法弄清楚如何保存这些。

 public partial class Form1 : Form
    {
        public string status = "no";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string name = txtName.Text;


            //validate information
            try { }
            catch { }

            //create new tab
            string title = name;
            TabPage myTabPage = new TabPage(title);
            tabControl1.TabPages.Add(myTabPage);


            //Add Labels

            Label lb = new Label();
            lb.Text = "Denomination:";
            lb.Location = new System.Drawing.Point(150, 75);
            lb.Name = "lbl";
            lb.Size = new System.Drawing.Size(100, 20);
            myTabPage.Controls.Add(lb);

            Label lb2 = new Label();
            lb2.Text = "Year:";
            lb2.Location = new System.Drawing.Point(150, 120);
            lb2.Name = "lbl2";
            lb2.Size = new System.Drawing.Size(100, 20);
            myTabPage.Controls.Add(lb2);

            Label lb3 = new Label();
            lb3.Text = "Grade:";
            lb3.Location = new System.Drawing.Point(150, 165);
            lb3.Name = "lbl3";
            lb3.Size = new System.Drawing.Size(100, 20);
            myTabPage.Controls.Add(lb3);

            Label lb4 = new Label();
            lb4.Text = "Mint Mark:";
            lb4.Location = new System.Drawing.Point(150, 210);
            lb4.Name = "lbl4";
            lb4.Size = new System.Drawing.Size(100, 20);
            myTabPage.Controls.Add(lb4);

            //Add text boxes

            TextBox tb = new TextBox();
            tb.Location = new System.Drawing.Point(250, 75);
            tb.Name = "txt";
            tb.Size = new System.Drawing.Size(184, 20);
            myTabPage.Controls.Add(tb);

            TextBox tb1 = new TextBox();
            tb1.Location = new System.Drawing.Point(250, 120);
            tb1.Name = "txt1";
            tb1.Size = new System.Drawing.Size(184, 20);
            myTabPage.Controls.Add(tb1);

            TextBox tb2 = new TextBox();
            tb2.Location = new System.Drawing.Point(250, 165);
            tb2.Name = "txt2";
            tb2.Size = new System.Drawing.Size(184, 20);
            myTabPage.Controls.Add(tb2);

            TextBox tb3 = new TextBox();
            tb3.Location = new System.Drawing.Point(250, 210);
            tb3.Name = "txt3";
            tb3.Size = new System.Drawing.Size(184, 20);
            myTabPage.Controls.Add(tb3);

            //put data inside of textboxes

            tb.Text = txtCoin.Text;
            tb1.Text = txtYear.Text;
            tb2.Text = txtGrade.Text;
            tb3.Text = txtMint.Text;

            // Add delete button

            Button bn = new Button();
            bn.Location = new System.Drawing.Point(560, 350);
            bn.Name = "btnDelete";
            bn.Text = "Delete";
            bn.Size = new System.Drawing.Size(100, 50);
            bn.Click += MyClick;
            myTabPage.Controls.Add(bn);
        }

        private void MyClick(object sender, EventArgs e)
        {
            Form2 myform = new Form2();
            myform.ShowDialog();




            if (status == "yes")
            { tabControl1.TabPages.Remove(tabControl1.SelectedTab); }

            status = "no";

        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

            int counter;
            int ccounter;
            string outLine ;

            string pathFileName = Path.Combine(Application.StartupPath, "coins.dat");

            StreamWriter writeIt = new StreamWriter(pathFileName);


            foreach (TabPage tabPage in tabControl1.TabPages)
            {


                if (tabControl1.TabCount > 1)
                {
                    outLine = tabPage + tb.Text + tb1.Text + tb2.Text + tb3.Text + "\t";
                    writeIt.WriteLine(outLine);
                }

                if (tabControl1.TabCount == 1)
                {
                    outLine = tabPage + "\t";
                    writeIt.WriteLine(outLine);
                }
            }


            writeIt.Close();

        }
    }
}

2 个答案:

答案 0 :(得分:1)

您需要在表单的字段中存储tb1等,以便其他方法可以访问它们。

答案 1 :(得分:1)

  

tb,tb1,tb2和tb3显示不存在的错误。

是的,他们会 - 你在button1_Click内将它们声明为局部变量。要从其他方法访问它们,您需要只检查选项卡页面中的控件,或者将它们声明为 instance 变量。但是,在这种情况下,您需要考虑可能有多个标签页的事实。

听起来你真的需要遍历每个标签页中的控件,然后选择文本框。要么是,要么创建自己的TabPage子类,它知道文本框。然后,您可以找到自定义TabPage的每个实例,并要求它自行保存。