关于C#里面的两个以上的panel切换
--------------------编程问答-------------------- pnlSingerAdress是不是在歌星点歌的容器里面,其它panel是不是全部隐藏了? --------------------编程问答-------------------- 是的!其他panel的Visible属性都是false待我点击第一个panel的listview后 触发事件 然后就有了上面的关键代码 但就是没有显示第二个panel 为什么? --------------------编程问答-------------------- 你能标注那个对应的是那个panel么? --------------------编程问答--------------------
pnlCenter.Visible = false;
pnlSingerAdress.Location = pnlCenter.Location; //1
pnlSingerAdress.Dock = DockStyle.Fill //2
pnlSingerAdress.Visible = true;
终觉得1,2 两句代码哪里有问题
--------------------编程问答-------------------- 要写一个类,并且把Panle名和动作写成变量
用动作名去触发类切换显示Panle,并且初始化他的位置
设计的时候Panl画好可以拖到一边,缩下不影响下一个设计,程序运行的时候初始化 他的长宽左边距,上边距就可以了,不要想得太复杂 --------------------编程问答-------------------- 来回切换两个面板的Visible属性来实现切换 --------------------编程问答--------------------
pnlCenter 是第一个Panel 就是男,女,组合 那个面板
然后第二个Panel是pnlSingerAdress 就是大陆,台湾,香港。。那个面板
我的目的是隐藏第一个Panel 显示第二个面板 --------------------编程问答--------------------
我是根据课件里说的照做的! --------------------编程问答-------------------- panel太多,看看是不是有嵌套的? --------------------编程问答--------------------
panel太多,看看是不是有嵌套的?
没嵌套 直接就在事件里写的 直接就用Visible属性切换而已! --------------------编程问答--------------------
pnlCenter.Visible = false;
pnlSingerAdress.Location = pnlCenter.Location; //1
pnlSingerAdress.Dock = DockStyle.Fill //2
pnlSingerAdress.Visible = true;
终觉得1,2 两句代码哪里有问题
pnlCenter 是第一个Panel 就是男,女,组合 那个面板
然后第二个Panel是pnlSingerAdress 就是大陆,台湾,香港。。那个面板
我的目的是隐藏第一个Panel 显示第二个面板
我是根据课件里说的照做的!
pnlSingerAdress.BringToFront();
pnlSingerAdress.Dock = DockStyle.Fill
换成这样试试
--------------------编程问答-------------------- 你这个问题不是因为“复杂”,而是因为“低级”,所以有的人懒得回,有的人又看不懂。
如果只是简单地UI设计,那么你应该单独设计不同的用户控件,单独去开发和测试(放在测试窗体里测试)。然后,你的主窗体使用一个一致的接口去管理它,例如(假设是)
public interface IMainWindow
{
Add(string name, UserControl panel);
SetVisible(string name);
}
你的程序把n多个组件插入主窗体,它内部把内容控件保存在集合中。然后一个统一的SetVisible方法自动、统一地处理这个逻辑。
程序设计者喜欢讨论接口、内数据结构,然后针对通用的内部结构才来讨论通用的逻辑。懒得谈论你这种“四条语句”。 --------------------编程问答--------------------
pnlCenter.Visible = false;
pnlSingerAdress.Location = pnlCenter.Location; //1
pnlSingerAdress.Dock = DockStyle.Fill //2
pnlSingerAdress.Visible = true;
终觉得1,2 两句代码哪里有问题
pnlCenter 是第一个Panel 就是男,女,组合 那个面板
然后第二个Panel是pnlSingerAdress 就是大陆,台湾,香港。。那个面板
我的目的是隐藏第一个Panel 显示第二个面板
我是根据课件里说的照做的!
pnlSingerAdress.BringToFront();
pnlSingerAdress.Dock = DockStyle.Fill
换成这样试试
我去~~成功了= =为什么我之前的方法就不行? --------------------编程问答-------------------- 在合理的工程方法中,各个独立的子应用程序UI都已经测试好了,不会再在SetVisible方法的代码中去出现什么 Location、Dock这类代码。
而你能在切换子应用程序界面这个逻辑时,出现这类代码,就足以证明你的代码可能出现各种各样意外问题。而你采取在所有地方乱copy代码的习惯,有懒得贴所有代码,很难找到问题。 --------------------编程问答--------------------
你这个问题不是因为“复杂”,而是因为“低级”,所以有的人懒得回,有的人又看不懂。
如果只是简单地UI设计,那么你应该单独设计不同的用户控件,单独去开发和测试(放在测试窗体里测试)。然后,你的主窗体使用一个一致的接口去管理它,例如(假设是)public interface IMainWindow
{
Add(string name, UserControl panel);
SetVisible(string name);
}
你的程序把n多个组件插入主窗体,它内部把内容控件保存在集合中。然后一个统一的SetVisible方法自动、统一地处理这个逻辑。
程序设计者喜欢讨论接口、内数据结构,然后针对通用的内部结构才来讨论通用的逻辑。懒得谈论你这种“四条语句”。
是的!因为懂的人觉得“低级” 不懂的人也看不懂。 但是万丈高楼平地起,必须要把面对自己学习的任何难题都一一解决,才能成长! 不过多谢你的教训! --------------------编程问答--------------------
在合理的工程方法中,各个独立的子应用程序UI都已经测试好了,不会再在SetVisible方法的代码中去出现什么 Location、Dock这类代码。
而你能在切换子应用程序界面这个逻辑时,出现这类代码,就足以证明你的代码可能出现各种各样意外问题。而你采取在所有地方乱copy代码的习惯,有懒得贴所有代码,很难找到问题。
那么 前辈 是要把所有的功能单独写一个 测试成功后再写进去项目里面吗? 多谢赐教! --------------------编程问答-------------------- 楼主可能把两个 panel 设计成嵌套关系了,应该是并列关系才对,
在 C# 里拖动控件的时候很容易就造成这样的结果。 --------------------编程问答--------------------
pnlCenter.Visible = false;
pnlSingerAdress.Location = pnlCenter.Location; //1
pnlSingerAdress.Dock = DockStyle.Fill //2
pnlSingerAdress.Visible = true;
终觉得1,2 两句代码哪里有问题
pnlCenter 是第一个Panel 就是男,女,组合 那个面板
然后第二个Panel是pnlSingerAdress 就是大陆,台湾,香港。。那个面板
我的目的是隐藏第一个Panel 显示第二个面板
我是根据课件里说的照做的!
pnlSingerAdress.BringToFront();
pnlSingerAdress.Dock = DockStyle.Fill
换成这样试试
哦~不! 我这里还是出错了! 之前改写的代码把第一个panel的Visible属性设为true了 改回false依然是不显示第二个panel --------------------编程问答-------------------- 来看看,学习一下。 --------------------编程问答-------------------- 应该是其中一个panel被放在另一个panel里了
所以外层的那个被隐藏的时候 里层的那个也跟着被隐藏了
设计的时候两个分开放 不要嵌套在一起了
执行的时候再改变panel的大小位置 应该就可以了 --------------------编程问答--------------------
在合理的工程方法中,各个独立的子应用程序UI都已经测试好了,不会再在SetVisible方法的代码中去出现什么 Location、Dock这类代码。
而你能在切换子应用程序界面这个逻辑时,出现这类代码,就足以证明你的代码可能出现各种各样意外问题。而你采取在所有地方乱copy代码的习惯,有懒得贴所有代码,很难找到问题。
你的方法很好,但是对于楼主这种对着课件抄代码的初学者,我肯定他完全不知道你在说什么。 --------------------编程问答--------------------
pnlCenter.Visible = false;
pnlSingerAdress.Location = pnlCenter.Location; //1
pnlSingerAdress.Dock = DockStyle.Fill //2
pnlSingerAdress.Visible = true;
终觉得1,2 两句代码哪里有问题
pnlCenter 是第一个Panel 就是男,女,组合 那个面板
然后第二个Panel是pnlSingerAdress 就是大陆,台湾,香港。。那个面板
我的目的是隐藏第一个Panel 显示第二个面板
我是根据课件里说的照做的!
pnlSingerAdress.BringToFront();
pnlSingerAdress.Dock = DockStyle.Fill
换成这样试试
哦~不! 我这里还是出错了! 之前改写的代码把第一个panel的Visible属性设为true了 改回false依然是不显示第二个panel
直接把项目上传上来吧,或者把form的design.cs文件贴出来。
补充:.NET技术 , C#