【问题标题】:C# Passing values to another formC# 将值传递给另一个表单
【发布时间】:2009-09-25 11:07:03
【问题描述】:

我将 bool 从一种形式传递到另一种形式,我尝试声明“Private bool useDBServer;”在我班级的顶部,但这会创建一个新变量。

我做错了什么?

谢谢

Form1 如下:

Form2 frm = new Form2(dataGridView1, _useDBServer, _useOther);

Form2 如下:

    public Form2(DataGridView dgv, bool useDBServer, bool useOther)
    {
       if(useDBServer) //<---- works here
       {
         //stuff
       }
    }


    private void readRegistry()
    {
       if(useDBServer) //<---- but not here
       {
         //stuff
       }
    }

【问题讨论】:

    标签: c# winforms forms


    【解决方案1】:

    如果您想在不同的方法中使用该变量,您必须将其作为实例变量,并在构造函数中复制该值:

    private readonly bool useDBServer;
    
    public Form2(DataGridView dgv, bool useDBServer, bool useOther)
    {
       this.useDBServer = useDBServer; // Copy parameter to instance variable
       if(useDBServer) 
       {
         //stuff
       }
    }
    
    
    private void readRegistry()
    {
       if(useDBServer) // Use the instance variable
       {
         //stuff
       }
    }
    

    【讨论】:

      【解决方案2】:
      public Form2(DataGridView dgv, bool _useDBServer, bool useOther)
          {
             useDBServer = _useDBServer;
      
             if(useDBServer) //<---- works here
             {
               //stuff
             }
          }
      

      【讨论】:

        【解决方案3】:

        做这样的事情:

        bool localUseDBServer;
        
        public Form2(DataGridView dgv, bool useDBServer, bool useOther)
        {
           localUseDBServer = useDBServer;
        
           if(localUseDBServer)
           {
             //stuff
           }
        }
        
        private void readRegistry()
        {
           if(localUseDBServer)
           {
             //stuff
           }
        }
        

        【讨论】:

        • 是因为我同时发布了与其他 2 个人相同的内容而投反对票吗?还是我发布的内容有问题?
        • @Matt:我没有投反对票,但我不会将 instance 变量称为“localXXX”……这听起来像是一个局部变量。
        • @Jon Skeet - 并不是要暗示你投了反对票。有人这样做了,我想知道为什么。是的,这个名字很糟糕,但我想暗示这个变量是类的本地变量,而不需要输入代码来显示这一点。
        【解决方案4】:

        您正在向构造函数传递一个参数。这将如何在类中的方法中使用?您要么需要将参数“保存”在实例成员变量中。或者你需要将参数从构造函数转发到方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-05
          • 2016-01-06
          相关资源
          最近更新 更多