如何将值从主窗体返回到不同的forms或类(C#)

由于一些不明原因,这个愚蠢的事情无法实施。

我在主窗体中有一个int count ,我想返回另一个类或表单。

 namespace my_speller { public partial class login : Form { public login() { InitializeComponent(); } int count; private void btnlogin_MouseUp(object sender, MouseEventArgs e) { dbaccess obj = new dbaccess(); for (int i = 0; i < 10; i++) { if (txtusername.Text == obj.Usersusername()[i]) { count = i; break; } } } public int namecount() { return count; } } } 

dbaccess是另一个类,我可以成功地将该类中定义的函数(Usersusername)调用到我的login表单。 一切都很好。 现在我想从主窗体返回到dbaccess类的int count 。 所以我实现了一个公共函数namecount来返回count 。 但是在另一个类中, count总是为零。 在主窗体中,我正确得到count的值(即i )。 但是当我以这种方式从dbaccess类调用时,没有返回任何内容:

  login obj = new login(); // do stuff 

或者来自同一程序中的其他表单,如下所示:

 namespace my_speller { public partial class student : Form { public student() { InitializeComponent(); } private void button3_Click(object sender, EventArgs e) { login obj = new login(); MessageBox.Show(obj.namecount().ToString()); } 

此处的消息框应显示count ,该count是某个数字,但显示的是零。 可能是什么原因?

当我试图从我的主窗体返回一个字符串时,会发生同样的事情。 它在其他类中始终为null 🙁

提前致谢

编辑:你能给自己的代码片段吗? 我不知道你可能用来帮助我的技术术语

此代码将创建您的登录表单的新实例。 每个实例都有自己的实例变量计数。

 login obj = new login(); MessageBox.Show(obj.namecount().ToString()); 

整数的默认值为0,因此每次创建表单的新实例时,count变量中的值都为0。 如果您希望表单的所有实例具有相同的count值,则应将count设为静态。

 private static int count; 

当变量是静态的时,Login表单的所有实例只共享一个计数实例。

 var form1 = new login(); // mouse up event fires on form1, value of count is set to 3 (for example) var form2 = new login(); form2.namecount(); // returns 3 

根据您要执行的操作,还有其他模式,例如使用事件或可以帮助在组件之间传递消息的介体。 这种方式当某种forms发生在某种forms时,其他forms可以对变化做出反应而不需要实际引用甚至知道应用程序中的其他forms。

 private void button3_Click(object sender, EventArgs e) { login obj = new login(); MessageBox.Show(obj.namecount().ToString()); } 

每次调用button3_Click时,都会实例化一个新的登录对象。 换句话说, obj不是对您的主要表单的引用; 它是对与主窗体相同类型的另一个对象的引用。

每次登录对象实例化时, count都默认为零。

你在哪里展示表格? 您正在做的是代码只是创建登录表单的新实例,并读取nameCount值,该值仍处于其初始化值:0。

我认为你应该使用ShowDialog并在DialogResult返回结果。 如果没关系,那就读取计数值。