我想在用户控件MenuSelect中通过checkbox设置用户控件DefaultMenuView 的button是否可见,代码如下  public partial class MenuSelect         public MenuSelect()
        {
            InitializeComponent();
        }        DefaultMenuView DefaultMenuView = new DefaultMenuView();
        private void btnSure_Click(object sender, EventArgs e)
        {            if (this.checkBox1.Checked)
            {
                DefaultMenuView.btnqueryview.Visible = true;
            }
            else
            {
                DefaultMenuView.btnqueryview.Visible = false;
            }        }请大家看看我的代码,为什么我点击确定btnSure却没有反应呢???

解决方案 »

  1.   

    你复述的不是很清楚。你通过checkbox设置用户控件DefaultMenuView 的button是否可见,就不是DefaultMenuView.btnqueryview.Visible = true,这是设置DefaultMenuView 是否可见又不是button; 这样:
              if (this.checkBox1.Checked)
                {
                    button.Visible = true;//button是你想是否可见的
                }
                else
                {
                    button.Visible = false;
                }
      

  2.   

    1.看看事件是否注册了
    2.试试
     
    private void btnSure_Click(object sender, EventArgs e) 
            {             DefaultMenuView.btnqueryview.Visible = false;             if (this.checkBox1.Checked) 
                { 
                    DefaultMenuView.btnqueryview.Visible = true; 
                } 
                else 
                { 
                    DefaultMenuView.btnqueryview.Visible = false; 
                }         } 
      

  3.   


    不好意思,我忘记说了btnqueryview就是button的name....
      

  4.   

    代码没问题啊 确定DefaultMenuView.Visiable=true?
      

  5.   

    谢谢回复!!我试了一下,发现问题出在我对DefaultMenuView的btnqueryview按钮并没有控制,无论我设置DefaultMenuView.btnqueryview.Visible=false/true,都没有变化, DefaultMenuView DefaultMenuView = new DefaultMenuView(); 这样不对,但是该怎么办呢?
      

  6.   

    好象跟昨儿我回的贴子一个毛病。在b里办事,希望a得到结果。你需要一个对象引用,以建立两个控件之间的关系。
    public partial class MenuSelect 
    {
       private DefaultMenuView defaultMenuView = null;
       public DefaultMenuView defaultMenuView { set{ _defaultMenuView = value;} }   ....
       private void btnSure_Click(object sender, EventArgs e)
            {            if (this.checkBox1.Checked)
                {
                    _defaultMenuView.btnqueryview.Visible = true;
                }
                else
                {
                    _defaultMenuView.btnqueryview.Visible = false;
                }        } 
       .....
    }
      

  7.   

    private DefaultMenuView _defaultMenuView = null; 
      

  8.   


    大哥,还在吗?怎么我一点确定就报错----NUllReferenceException
      

  9.   

    在用时,首先需要...MenuSelect.defaultMenuView = 你控件 
    即:你需要声明MenuSelect的defaultMenuView属性指向你的那个defaultMenuView控件名。
      

  10.   


    大哥,说的详细点好吗?谢谢啊!!!我现在脑子都糊里糊涂的。。是在DefaultMenuView声明吗?
      

  11.   

    可以在Load过程中:
    DefaultMenuView b = new DefaultMenuView();
    MenuSelect a = new MenuSelect();
    a.defaultMenuView = b;this.Controls.add(a); //例
    this.Controls.add(b); //例
    如果你的控件是直接摆到窗体上的。在Load过程中可直接:
    a.defaultMenuView = b; //a: MenuSelect控件, a:控件名, b:DefaultMenuView控件, b:控件名;
      

  12.   


    我的DefaultMenuView代码是:namespace Client
    {
        public partial class DefaultMenuView : BaseView
        {        public override void OnLoad()
            {
                DefaultMenuView DefaultMenuView = new DefaultMenuView();
                MenuSelect MenuSelect = new MenuSelect();
                MenuSelect.defaultMenuView = DefaultMenuView;            this.Controls.Add(DefaultMenuView);
                this.Controls.Add(MenuSelect);  
            }
            public DefaultMenuView()
            {
                InitializeComponent();
                this.title = "主菜单";            btnqueryview.Visible = true;
            }        private void btnqueryview_Click(object sender, EventArgs e)
            {
                parentForm.LoadView(typeof(DataQueryView));
            }        private void btninsert_Click(object sender, EventArgs e)
            {
                parentForm.LoadView(typeof(insert));
            }        private void btnExit_Click(object sender, EventArgs e)
            {
                if (DialogResult.Yes == MessageBox.Show("确定要注销吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2))
                {
                    this.ParentForm.LoadView(typeof(entry));
                }
            }        private void btnconfig_Click(object sender, EventArgs e)
            {
                this.ParentForm.LoadView(typeof(MenuSelect));
            }
        }
    }
    MenuSelect代码是:
        
    public partial class MenuSelect : BaseView 
        {
            private DefaultMenuView _defaultMenuView = null;
            public DefaultMenuView defaultMenuView 
            { 
                set { _defaultMenuView = value; } 
            }        public MenuSelect()
            {
                InitializeComponent();
            }        private void btnExit_Click(object sender, EventArgs e)
            {
                this.ParentForm.LoadView(typeof(DefaultMenuView));
            }        private void btnSure_Click(object sender, EventArgs e)
            {            if (this.checkBox1.Checked)
                {
                    _defaultMenuView.btnqueryview.Visible = true;
                }
                else
                {
                    _defaultMenuView.btnqueryview.Visible = false;
                }        }    }
      

  13.   

    1。创建一个WinForm项目。2。创建控件UserControl1:
    button1--Modifiers: Public3。创建控件UserControl2:
    checkBox1Code:
        public partial class UserControl2 : UserControl
        {
            private UserControl1 _userControl1 = null;
            public UserControl1 userControl1 { set { _userControl1 = value; } }        public UserControl2()
            {
                InitializeComponent();
            }        private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                _userControl1.button1.Visible = (sender as CheckBox).Checked;
            }
        }
    4。Form1:
            public Form1()
            {
                InitializeComponent();            UserControl1 ctl1 = new UserControl1();            UserControl2 ctl2 = new UserControl2();
                ctl2.userControl1 = ctl1;            ctl2.Location = new Point(0, ctl1.Height);            this.Controls.Add(ctl1);
                this.Controls.Add(ctl2);
            }
      

  14.   

    我新建一个winform,确实没问题,但是在我程序里面就是一点击那个checkbox就报错,我晕。。
      

  15.   

    问题可能出在:1,我做的是智能设备的项目。2,这两个控件都属于baseView。。