我想做的就是一个最简单的思路:Winform里点菜单在当前页面刷新变成其他的页面。
下面仔细说下:建一个窗口,放一个menustrip在窗口最上面做菜单。
然后点击不同菜单在窗口中显示不同的其他内容窗体。
最上面的菜单不变。这个怎么实现?我所知Winform不是web,不能点一个菜单然后改变当前页面的链接这样做。
Winform都是new一个然后form.show()弹出窗口来。我现在就想点了菜单后把当前窗口刷新成点击菜单指定的窗口,而不是弹出来。把这要怎么办?
请教了~

解决方案 »

  1.   

    new出来后,把form.toplevel=false;然后把窗体添加到当前窗体上:currentform.controls.add(form);
    form.show();就可以了;
      

  2.   

    你的效果,可以用tabcontrol控件实现!
      

  3.   

    如果界面不多的话,也可以试试在一个form下通过控制几个panel的visible属性,实现页面变化
      

  4.   

    多谢!
    想问一下这样效果是和web一样在当前页面变换吗?别是当前窗口消失了又蹦出来个
      

  5.   

    Winform的ERP。。多少个form都有可能
      

  6.   

    用winform mdi子窗体可以实现你的功能
      

  7.   

    一般说来 WINFORM 不会采取这样的做法 通常都是这样:主窗体是一个MDIFORM 父窗体 然后点菜单 弹出相应的FORM当然如果一定要按照你的要求也是有办法的 只是稍微麻烦点:首先你的主窗体不是MDIFORM 而是一个单独的FORM 每次点菜单 把FORM.Controls清空 然后通过代码生成相应的控件 设定好控件的属性 大小 位置等 然后添加到FORM.Controls集合中
    再点其他菜单 重复这个过程对于习惯拖控件来设计窗体的我们来说 这个真的很麻烦 不过我也可以教你的取巧的办法:你先生成一个临时的Form 把要显示的控件拖上去 这个时候 designer.cs里就有你要的布局代码了 你COPY到你自己的方法里以后在调用就好了
      

  8.   

    用不同的panel,控制panel的显示,隐藏
      

  9.   


    //在其他帖子里找到的,和2楼说的差不多
    childform form = new childform(); 
    form.TopLevel = false; 
    form.Dock = DockStyle.Fill;            
    form.FormBorderStyle = FormBorderStyle.None; 
    form.Parent = panel; 
    form.show();我今晚回去先试试这个方法和用MID子窗体的方法。
    成功了就来结贴
      

  10.   

    给你一个思路,用mdi窗体点击不同的菜单,让不同的mdi子窗体激活就可以了,就可以事先tabpage一样的效果了!!
      

  11.   

    最好用MDI方式解決 若不要可用以下方法
    把所有的Form裡面的元件抽離出來 寫成UserControl 使用者控制項 
    然後程式只建立一個窗體 於其菜單中 動態建立你所抽離出來的UserControl即可
      

  12.   

    childform form = new childform(); 
    form.show();
      

  13.   

    使用MDI方式,其他窗口作为子窗口显示.Form2 frm = new Form2();
    frm.MdiParentM = this;
    frm.Show
      

  14.   

    newForm frm = new newForm();
    frm.MdiParentM = this;
    frm.Show();
      

  15.   

    MDI .........Panel.......TabControl 等等
      

  16.   

    如果是的话找我
    我有个相似的dll 只是是别人写的
      

  17.   

    不好意思这两天又点忙。。
    问题已经解决了,就用MDI子窗体的方法就可以完美实现,子窗体的一些属性需要配置一下,因为不需要最大化最小化和边框。
    结贴~