如何在c#.net中从窗体访问对象到另一个类

如何在c#.net中从窗体访问对象到另一个类,c#,C#,我有一个名为frmMain.cs的表单,其中包含两(2)个文本框,txtsername和txtPassword,我想在我创建的名为CheckIfUsernameAndPasswordExist.cs的类中访问它们。请注意,两个对象修饰符已经公开了。当我使用正确的类名frmMain.cs时,错误显示“非静态字段、方法或属性需要对象引用”,因此我创建了该类的新实例“frmMain formMain=new frmMain();”但问题是,当我运行程序时,这些对象是空的,因此它无法访问我的数据库值。请

我有一个名为
frmMain.cs
的表单,其中包含两(2)个文本框,
txtsername
txtPassword
,我想在我创建的名为
CheckIfUsernameAndPasswordExist.cs的类中访问它们。请注意,两个对象修饰符已经公开了。当我使用正确的类名
frmMain.cs
时,错误显示“非静态字段、方法或属性需要对象引用”,因此我创建了该
类的新实例“frmMain formMain=new frmMain();”
但问题是,当我运行程序时,这些对象是空的,因此它无法访问我的数据库值。请帮帮我,谢谢。我是C#的新手


最实用的方法是在用户按下
Submit
按钮后,将
txtextername.Text
txtPassword.Text
的值传递给您的
Authentication.cs
类(或者在您的情况下称为
checkifusername和passwordexist.cs

private void btnSubmit_Click(object sender, EventArgs e)
{
    bool blnRes = Authentication.Authenicate(txtUsername.Text.Trim(),
                                             txtPassword.Text.Trim());
}

Create new frmMain将为您提供全新的对象及其所有变量作为默认值初始化您需要做的是创建存储用户名和密码的新静态类,并在代码中使用它们

最简单的方法是简单地将它们传入。哪段代码创建了
CheckIfUserName和PasswordExist的实例并调用它?您是从
frmMain
内部调用它,还是从其他地方调用它?”。您需要一个userPassValidationService,它满足您的需要。将该服务传递(注入)到frmMain中。那就叫那儿吧。(这是控制反转)旁注:我真的很希望,你不是在用明文保存密码,是吗?@MarkNartea你没有回答我的问题。请仔细阅读,“我想调用这两个”-您不“调用”属性。顺便说一句:“两个对象修改器处于公共状态”公共属性“txtPassword”应该会触发一些警报。您希望有一个尽可能私有的纯文本密码字段。您甚至可以传递该控件,以防不断监视其内容:private void btnSubmit_Click(object sender,EventArgs e){bool blnRes=Authentication.authenticate(txtexername,txtPassword);}。。。其中txtUsername和txtPassword的类型为TextBox。@MiguelMateo,这将为ValidationClass中的UI控件引入依赖项。这不是我想做的,也不是我想做的,但好吧…@Fildor但是当你有多任务应用程序,最后运行并发线程,检查那些文本框的状态和/或更新你的GUI(例如更改标签)时,它是有用的。@MiguelMateo你为什么要这样做?您完全可以使用控件的事件按需触发验证。不需要线程。@Fildor,请注意原始问题。可能的答案之一是发送值。我扩展到,如果需要,您甚至可以发送控件。在我的例子中,当线程继续运行时,使用后端线程中计算的结果更新GUI中的标签非常有用。
private void btnSubmit_Click(object sender, EventArgs e)
{
    bool blnRes = Authentication.Authenicate(txtUsername.Text.Trim(),
                                             txtPassword.Text.Trim());
}