WinForm应用程序从动态文本框中获取值

时间:2017-01-30 18:41:11

标签: c# winforms oop textbox

这对我来说是一场真正的斗争,因为这是我现在最需要的。我为登录表单创建了2个动态文本框,如果我点击登录按钮,我想从文本框中获取值。我在互联网上搜索了可能的值,但它们似乎都不适合我。按钮和文本框是在不同的类中制作的,这对我来说是痛苦的一部分。我无法从表单上的文本框中获取值到我的按钮所在的类中的事件处理程序。如果有人可以帮助我这个,那么我可以继续我的项目,并很快完成它。

我还会为您留下一些代码。这些部分将是按钮和文本框以及主要表单的类。

主要表单

            x_loc = 0;
            y_loc = 80;
            x_size = 100;
            y_size = 20;

            foreach(string item in lon.loginLbls())
            {
                clsLbl = new Labels(pnlMenu, x_loc, y_loc, x_size, y_size, item);
                y_loc += 50;
            }

            x_loc = 0;
            y_loc = 100;
            x_size = 200;
            y_size = 30;

            foreach(string item in lon.loginForm())
            {
                clsTxt = new Textboxes(pnlMenu, x_loc, y_loc, x_size, y_size, item);
                y_loc += 50;
            }


            x_loc = 0;
            y_loc = 200;
            x_size = 200;
            y_size = 30;
            foreach(string item in lon.loginBtns())
            {
                clsBtn = new Buttons(pnlMenu, x_loc, y_loc, x_size, y_size, item);
                y_loc += 50;
            }

按钮类

Button btn;



public Buttons(Panel parent, int x_loc, int y_loc, int x_size, int y_size, string name)
    {
        btn = new Button();
        btn.Location = new Point(x_loc, y_loc);
        btn.Size = new Size(x_size, y_size);
        btn.Text = name;
        btn.Name = name;
        btn.Click += new EventHandler(btnHandler);
        btn.ForeColor = Color.Black;
        btn.BackColor = Color.White;

        parent.Controls.Add(btn);
    }

    private void btnHandler(object sender, EventArgs e)
    {
        Button btn = sender as Button;

        switch (btn.Text)
        {
            case "Login":
                Login lgn = new Login();
                break;

            case "Afsluiten":
                Application.Exit();
                break;

        }
    }

文本框类

TextBox tb;

        public Textboxes(Panel parent, int x_loc, int y_loc, int x_size, int y_size, string name)
        {
            tb = new TextBox();
            tb.Location = new Point(x_loc, y_loc);
            tb.Size = new Size(x_size, y_size);
            tb.Name = name;
            tb.ForeColor = Color.Black;
            tb.BackColor = Color.White;

            parent.Controls.Add(tb);
        }

解释

public List<string> loginBtns()
        {
            List<string> lgnBtns = new List<string>();
            lgnBtns.Add("Login");

            return lgnBtns;
        }

        public List<string> loginForm()
        {
            List<string> lgnForm = new List<string>();
            lgnForm.Add("username");
            lgnForm.Add("password");

            return lgnForm;
        }

        public List<string> loginLbls()
        {
            List<string> lgnLbl = new List<string>();
            lgnLbl.Add("Code");
            lgnLbl.Add("Wachtwoord");

            return lgnLbl;
        }

注意:所有这些方法都位于不同的类中。

1 个答案:

答案 0 :(得分:0)

您有两种方法可以:

1.在公共文本框上创建:

partial class form1{
     TextBox tb = new TextBox();
...
}

然后可以随时得到它的文本:

string a = tb.Text;

2.获取父级的文本框控件:

TextBox[] tb = parent.Controls.OfType<TextBox>().ToArray();

现在你有一个数组中的文本框。您可能希望使用标记来识别它们:

  string a = tb.FirstOrDefault(t=>(string)t.Tag=="username").Text;

当然,在这种情况下,您必须在添加TextBox时设置Tag

相关问题