C#如何设置不同用户控件的button是否可见

hengsf2010 2009-07-18 03:00:58
我想在用户控件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却没有反应呢???
...全文
405 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
1。创建一个WinForm项目。

2。创建控件UserControl1:
button1--Modifiers: Public

3。创建控件UserControl2:
checkBox1

Code:
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);
}
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xie_yanke 的回复:]
稍等,给你做个简单的实验。
[/Quote]

我的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;
}

}

}

xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
稍等,给你做个简单的实验。
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xie_yanke 的回复:]
可以在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:控件名;
[/Quote]

唉,谢谢大哥了,点击确认还是报错,绝望了。。。。。。。。。。。。。。。。
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
那位可以帮帮我啊??谢谢了!!
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
可以在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:控件名;
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xie_yanke 的回复:]
在用时,首先需要...

MenuSelect.defaultMenuView = 你控件


即:你需要声明MenuSelect的defaultMenuView属性指向你的那个defaultMenuView控件名。
[/Quote]

大哥,说的详细点好吗?谢谢啊!!!我现在脑子都糊里糊涂的。。是在DefaultMenuView声明吗?
zhouzangood 2009-07-20
  • 打赏
  • 举报
回复
过来,看看
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
在用时,首先需要...

MenuSelect.defaultMenuView = 你控件


即:你需要声明MenuSelect的defaultMenuView属性指向你的那个defaultMenuView控件名。
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xie_yanke 的回复:]
private DefaultMenuView _defaultMenuView = null;
[/Quote]

大哥,还在吗?怎么我一点确定就报错----NUllReferenceException
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xie_yanke 的回复:]
private DefaultMenuView _defaultMenuView = null;
[/Quote]

谢谢大哥,我试试!!
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
private DefaultMenuView _defaultMenuView = null;
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
好象跟昨儿我回的贴子一个毛病。

在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;
}

}
.....
}
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
请大家帮帮忙啊,谢谢啊!!!!!!!!!!!!!!!!!!!!!!!!!
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lqknife 的回复:]
代码没问题啊 确定DefaultMenuView.Visiable=true?
[/Quote]


谢谢回复!!我试了一下,发现问题出在我对DefaultMenuView的btnqueryview按钮并没有控制,无论我设置DefaultMenuView.btnqueryview.Visible=false/true,都没有变化,

DefaultMenuView DefaultMenuView = new DefaultMenuView(); 这样不对,但是该怎么办呢?
LQknife 2009-07-20
  • 打赏
  • 举报
回复
代码没问题啊 确定DefaultMenuView.Visiable=true?
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
问题没有解决啊,求大家帮助啊!!
xie_yanke 2009-07-20
  • 打赏
  • 举报
回复
N0, 我在智能设备项目中, 一样可行。
风云1978 2009-07-20
  • 打赏
  • 举报
回复
学习学习
hengsf2010 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xie_yanke 的回复:]
1。创建一个WinForm项目。

2。创建控件UserControl1:
button1--Modifiers: Public

3。创建控件UserControl2:
checkBox1

Code:
    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);
        }

[/Quote]


问题可能出在:1,我做的是智能设备的项目。2,这两个控件都属于baseView。。。。。
加载更多回复(5)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧