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类能够访问文本框中的数据,然后比较它,如果两个字符串相等,则更新列表框。有一种简单的方法可以做到这一点吗?
答案 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()