C#从类中访问文本框?

时间:2014-04-22 01:56:23

标签: c#

namespace WindowsFormsApplication1
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Authenticator at = new Authenticator();
            at.validate();
        }
    }

    public class Authenticator
    {
        private int num;

        public bool validate()
        {
            if (textBox1.Text == num.ToString()) // problem #1
            {
                 ListBox.Items.Add("Valid"); // problem #2
            }
        }
    }
}

大家好。

从上面的代码中可以看出,我正在编写一个应用程序,它需要用户定义的类才能访问我正在使用的winforms,就像上面的简化示例一样。我对C#很新,所以请原谅我的无知。

我需要authenticator类能够访问文本框中的数据,然后比较它,如果两个字符串相等,则更新列表框。有一种简单的方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:3)

可能最好将gui与逻辑区分开来:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Authenticator at = new Authenticator();
        if (at.validate(textBox1.Text)) {
            ListBox.Items.Add("Valid");
        }
    }
}

public class Authenticator
{
    private int num;

    public bool validate(string s)
    {
        if (s == num.ToString())
        {
             return true;
        }
        return false;
    }
}

答案 1 :(得分:2)

这样的事情怎么样?

public bool validate(string text)
{
     return (text == num.ToString());
}

并在你的代码中调用它。您应该尝试使代码尽可能可重用。这意味着对Form上特定控件实例的引用并不总是最佳设计。

if (at.validate(textBox1.Text))
{
     ListBox.Items.Add("Valid");
}

答案 2 :(得分:0)

抱歉,我无法对您的帖子发表评论,但我没有足够的声誉。

在获取表单访问其他表单中的字符串之前,我遇到过类似的问题。

在我的情况下,我只需要将字符串设为静态。尝试对文本框执行相同的操作。

public static TextBox textBox1;
public Form1()