【问题标题】:two form classes accessing a different class C#访问不同类 C# 的两个表单类
【发布时间】:2020-08-28 05:26:07
【问题描述】:

- 我有三个班级:

  1. 启动程序时调用的主winform。
  2. 加载第一个表单时调用的winform(等待密码)。
  3. 我使用的方法的类并且有一些变量。

当我通过 2nd 访问 3rd 类,然后我将一些数据保存在 3rd 的变量上,它被保存并且我当我调试 prgram 时可以看到它。问题是当我尝试通过 *1st 再次访问 3rd 的变量时,数据没有保存(我认为这是因为调用了 3rd 类例如:3rd_Class class= new 3rd_class())。有没有办法解决这个问题,先谢谢了。

一级代码:

public partial class form_parent : Form{
    
    private Methods methods = new Methods();
    private void form_parent_Load(object sender, EventArgs e)
    {
        form_dbPass dbpass = new form_dbPass();
        dbpass.ShowDialog();
        if (!dbpass.verified)
            Close();
        
        string txt = methods.DBpassword;
    }
}

二等代码:

partial class form_dbPass : Form
{
    private void btn_ok_Click(object sender, EventArgs e){
    
        Methods methods = new Methods();
        methods.DBpassword = "test";
    }
}

第三类代码:

public class Methods
{ 
   public string DBpassword = "";
    
   public void createDB(string password){

   ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
   if (con != null)
      con.Close();    
   DBpassword = password;
   }
}

【问题讨论】:

  • 当您说“表单类”时,您是指 WinForms 吗?
  • 是的,我用我的一些代码编辑了帖子以简化问题

标签: c# winforms class oop


【解决方案1】:

哎呀,我第一次没有正确阅读它,虽然我仍然不明白你是如何在没有构造函数的情况下创建该对象的。

仅仅在两个表单上创建一个类的对象不会引用任何东西,因为它们是 2 个不同的对象。但这是一个简单的解决方案。

以第二种形式公开该对象..

public Methods methods = new Method();

然后在创建时通过构造函数(那时不需要公共)或只是传递它来简单地引用该对象..

在form_parent中

Methods objToPass = new Method();
form_dbPass frm2 = new form_dbPass(objToPass); //obv set it in the 
//constructor then
frm2.Show()

或者...

在 form_dbPass..

public Methods method = null;

在form_parent中

Methods objToPass = new Method();
form_dbPass frm2 = new form_dbPass();
frm2.Methods = objToPass;

完成,这将引用它并且它们是相同的那时 如果你想让它持续更新,你必须手动或通过其他方式更新它。

希望能帮到你。问候

【讨论】:

  • 我们都从任何地方开始 :) 是我开始时最大的麻烦之一
【解决方案2】:

“1st class”的private Methods methods和“2nd”的Methods methods彼此没有关系。

【讨论】:

  • 我知道我只是想知道是否可以在不更改太多代码的情况下解决此问题,因为如果我不能,我将从头开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2018-06-25
相关资源
最近更新 更多