我正在设计一个windwos应用程序,form1,在form1上,左侧设计一列按钮,(如四个),右侧用了panel 控件来存放一些相关的控件。功能是,当单击左侧的按钮时,右侧的panel1控件中的内容对应显示。(单击相同的按钮显示同样的内容,单击不同的按钮显示的不同的内容)。请问高手:如何实现这样的功能?  且panel1控件的大小位置最好不变,变的是其中的一些内容。

解决方案 »

  1.   

    不明白你说的是什么,给你个例子http://download.csdn.net/source/570840
      

  2.   

    你的意思是说panel里面的控件不一样,每次显示的不一样吗??你可以用多个panel,隐藏,显示控制!如果至于动态显示数据的话,查询语句,对应显示就可以了!
      

  3.   

    我的意思是,单击左侧的按钮1,在右侧现实内容,如一些控件组合;当单击按钮2时,右侧出现新的控件组合,原来的控件不见了;这些新的控件组合在同一个位置,我要问的是:原来按钮1的事件我已经设计好了,当作按钮2时,我如何清除原来的一些控件,加上我现在的按钮2需要的控件,但执行程序是,按钮1和按钮2的功能都能用,用那种方法去实现?或者说,我计划在右侧同一位置,设计panel 1 和 panel 2  ,但不行,不能正常显示的。如果这时网页,用框架就和容易实现了,但是应用程序我不知如何去做。
      

  4.   

    private void button1_Click(object sender, System.EventArgs e)
    {

    this.panel1.Visible=true;
    this.panel2.Visible=false;
     
    } private void button2_Click(object sender, System.EventArgs e)
    {
    this.panel1.Visible=false;
    this.panel2.Visible=true;
     
    }不会是说的这个意思吧 ???  
      

  5.   

    用自定义控件啊,自己写一个用户控件,然后将控件添加到你得panel例就可以了啊 
    刚做完这个东西  
      

  6.   

    首先,谢谢所有回答的高手们。我的意思和kevin  、seeup相似,如何在设计好第一个panel  后隐藏panel和其中的控件,只有这一部做好了,才能做下一步,设计panel 2和其中的控件;问题归结到,如何隐藏panel 1 及其中的控件?在设计状态,我不知如何实现?分页空间我还没有试验,因为单击按钮1后,还需要弹出一个对话框;自定义控件的方法我还不会,还得谢谢大家的提醒。
      

  7.   


    我没太明白你的意思.
    如何隐藏panel 1 及其中的控件?隐藏panel 1后  panel 1里里面的控件应该都全部隐藏了啊....如还不行,那就所有控件你都写Visible属性
      

  8.   

    哦,那我在设计panel 2 时,是否只能在事件中用代码一条语句一条语句的写?不能在设计状态通过工具箱拖拉吗?如果拖拉工具箱,那么panel 1 及其中的控件怎么办?如何隐藏?
      

  9.   

    你隐藏panel 里面的控件也会全部隐藏!
      

  10.   

    在同一个区域,panel 控件最多能重叠几个?能大于三个吗?
      

  11.   

    panel  不能太多了,否则会认为有嵌套关系,最外的panel  的 visiable=false ,里面的panle 不能显示的。
      

  12.   

    用自定义控件啊,自己写一个用户控件,然后将控件添加到你得panel例就可以了
      

  13.   

    panel随便放,我放过7个!你做界面怎么样无所谓,不过给用户显示的时候是一个一个的panel,你怕什么?买房子花钱,用控件不用省着,这种东西做成用户控件有点大材小用了
      

  14.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {        }        
            private void button1_Click_1(object sender, EventArgs e)
            {
                panel1.Visible = true;
                panel2.Visible = false;
                panel3.Visible = false;
                panel4.Visible = false;
                label1.Visible = false ;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = true ;        }        private void button2_Click(object sender, EventArgs e)
            {
                panel1.Visible = false;
                panel2.Visible = true;
                panel3.Visible = false;
                panel4.Visible = false;
                label1.Visible = false;
                label2.Visible = false;
                label3.Visible = true;
                label4.Visible = false;
            }        private void button3_Click(object sender, EventArgs e)
            {
                panel1.Visible = false;
                panel2.Visible = false;
                panel3.Visible = true;
                panel4.Visible = false;
                label1.Visible = false;
                label2.Visible = true ;
                label3.Visible = false;
                label4.Visible = false;
            }        private void button4_Click(object sender, EventArgs e)
            {
                panel1.Visible = false;
                panel2.Visible = false;
                panel3.Visible = false;
                panel4.Visible = true;
                label1.Visible = true ;
                label2.Visible = false;
                label3.Visible = false;
                label4.Visible = false;
            }        private void panel4_Paint(object sender, PaintEventArgs e)
            {        }
        }
    }这是我的程序,但不能正确显示,panel 1中放label 4,   panel 2 中放  label 3  ,panel 3中放label 2,  panel 4 中放label 1,
    运行结果,不显示
      

  15.   

    不知道搂主说的这个用tabcontrol是否可以实现?一定要用panel吗?
      

  16.   

    http://download.csdn.net/source/586431我做了一个,不知是不是楼主要的,可以到上面地址下载来看看,也只能帮你到这边了!!!主程序运行的结果:点击Button1后的结果:
      

  17.   

    答案前面已经说得很清楚了,点按钮将相应的Panel设置为显示,将别的Panel设置为隐藏。
      

  18.   

    不一定要用panel,但是第一个按钮单击后,弹出对话框,用其他的控件能否实现,我请教的就是有没有这样的控件。同时,无论单击哪个按钮,在右边的同一区域显示不同的内容,就是相当于网页中的框架。每个按钮对应固定的内容。
      

  19.   

    可以根据显示的控件的不同写几个自定义用户控件,当点不同按钮form绑定不同自定义控件,点其他按钮时将原来panel里的controls都clear掉重新绑定,
      

  20.   


    private void lblFoodMenu_Click(object sender, EventArgs e)
            {
                this.pnlRight.Controls.Clear();      //将右窗体pannal上的所有控件清空
                uclFoodMenu fm = new uclFoodMenu();  //实例  用户控件页的对象
                this.pnlRight.Controls.Add(fm);      //添加  用户控件页到右窗体
                fm.Dock = DockStyle.Fill;            //将右窗体填满
            }
      

  21.   

    类似outlook吧,可以用treeview mdi 实现
      

  22.   

    搞好技术这堂课!: 我下载了你的程序,试过了,能用,谢了。给你分。
    用tabcontrol ,应为我做的界面复杂,在单击按钮1后,还需弹出一个对话框,所以我没有使用此方法。
    用用户控件或自定义控件,可以实现,只是比较复杂。
    谢谢所有的发贴的各位。