C# windows窗口应用程序切换主界面的显示内容
不知道说清楚没有?
就是我的窗口分为两部分,
左边,控制部分,由一些按钮组成
右边,显示部分,由些控件(如下拉,文本等等组成)
左边的每个按钮对应显示部分的页面,也就是说,左边换一个按钮点,那么右边就显示其相应的内容.
比如,左边有3个按钮,分别 进货,出货,库存
点进货,右边出现进货的页面,
点出货,右边出现出货页面,
请问应该如何实现页面切换控制,我朋友告诉我,把3个页面做成3个重叠的页面,然后控制他们好显示与隐藏来达到目的,但我觉得不太好,感觉 有点乱.
我觉得可不可以把每个Panel写成相应的对象,每次点的时候销毁其他,然后再生成一个,但是不知道怎么写?是不是用用户自定义控件
这里不用tabcontrol,MDI也不用,就是几个页面换的方法,
其实我主要是想要动态加载,因为页面有点多,如果用 tabcontrol,不太好,我刚才说进销存,只是个例子,如果要实现动态加载怎么用,或者用用户控件怎么用?????????谢谢大家
或者有没有更好的方法?请大家指点
可以在左边固定的界面使用委托,初始化让左边窗体全部显示为(0,0),默认的为最大显示.然后点击左边窗体的时候,初始化右边的窗体,同样是让右边的窗体显示在固定的位置.例子如下:
public void showSideForm(Form form)
{
this.lastSideForm.Visible = false;//上一个窗体,最初默认是显示的窗体
this.lastSideForm = form;
this.lastSideForm.Visible = true;
form.Parent = this.pSide;//pSide为左边固定框的panel
}
public void showMainForm(Form form)
{
this.lastMainForm.Visible = false;//上一个窗体,最初默认是显示的主窗体
this.lastMainForm = form;
form.Parent = this.pMain;//pMain为主窗体的panel
form.Visible = true;
}
public void InitialForm(Form form)
{
form.Location = new Point(0,0);
form.TopLevel = false;
form.TopMost = false;
form.StartPosition = FromStartPosition.Manual;
}
然后在form1_Load中加入一个委托,将所有在左边显示的窗体全部InitialForm;
声明一个委托delegate d(Form form)类,每一个左边窗体声明对象时new一个参数d,
动态显示窗口。
定义窗口变量,不同的按钮,创建不同的窗口变量来显示。指定父窗口是同一个容器控件。
继续追问:
请进一步告诉我下,如何定义动态窗口?请问窗口会弹出来吗?我的不要他弹出来,要嵌在页面中
补充回答: 你说的到底是C# WindowForm,还是C# WebForm?
继续追问:
WindowForm
要嵌在主窗口中
补充回答:
右边放一个容器类控件,比如Panel。
指定动态的窗口变量的父窗口为Panel 。
补充回答: 朋友,我说的还不够清楚?
继续追问:
左边放了按钮
右边放了个PANEL
现在我不清楚的是右边是一个页面对应一个PANEL,还是所有页面都用一个PANEL
继续追问:
我知道了,就是写出几个继承窗口,然后是父类是右边那个PANEL,这样窗口就不会弹出来?这样只要每个按钮指定一个窗口!就可以控制了!
继续追问: 是这样吗?
补充回答: 是所有页面共用一个Panel 。
补充回答: 不妨一试。
继续追问: 那问题是,如果出来一个页面,我点了另一个按钮,这个时候出来另一个页面,刚才出来的需要销毁吗?如果要销毁,怎么销毁
补充回答: 不需要销毁啊。
楼主看看这张图片,是不是你想要的效果。
补充回答: 做个简单的说明,左边是一个可以收展的导航,上面是功能按钮
右边部分是对应功能块,不允许同名窗口多次打开
采用的是多文档
还有疑问,请追问
继续追问:
恩,有点像,但是我右边的窗口不能动,而且一次只能出来一个穿口
补充回答: 不能动更简单,load的时候窗体显示为最大化,同时设置最大化属性为false
但是必须在每个窗口上添加关闭按钮,可以理解嘛
补充回答: 当然你也可用通过设置 WindowState 为 Maximized
继续追问:
恩,明白了很多,
问题是如果我重新点另一按钮,怎么销毁以前打开的呢?还有就是那个标题烂如何去掉,我想让他看起来就是一个整体,而不是其中的一个窗口
继续追问: 窗口有点多,而且有点复杂,如何设置了不能重复打开,打开一个,关闭另一个的时候如何销毁前面一个?
补充回答: 我说的是不允许同名窗口多次打开!!!
比如说已经新建了一个管理 客服信息的窗体就不能在未关闭这个窗体之前打开另一个管理 客服信息的窗体,但是可以打开其他不同名的窗体
补充回答: 至于去掉子窗体标题栏可以:
设置这两个属性
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
添加下面的事件就可以了
private void Form_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.FormBorderStyle = FormBorderStyle.None;
}
else
{
this.FormBorderStyle = FormBorderStyle.Sizable;
}
}
补充回答: 当然在这里
else
{
this.FormBorderStyle = FormBorderStyle.Sizable;
}
是多余的
C# windows窗口应用程序切换主界面的显示内容的更多相关文章
- Android小项目之十一 应用程序的主界面
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...
- 第一个Windows窗口应用程序
学习目的 熟悉开发工具Visual C++ 6.0和MSDN 2001的使用. 应用Windows API函数, 手工编写具有最基本构成的Windows窗口应用程序(包含WinMain入口函数, 消息 ...
- Android项目实战--手机卫士20--拿到已经安装了的程序以及程序管理主界面
好了,之前我们就讲了高级工具里面的短信备份与还原,那么我们高级工具里面的功能就基本上完成的啦,还有一个叫程序锁的功能而已,但我们今天先不做它先,我们先把我们的程序管理这个功能完成先. 先让大家看一下我 ...
- windows 7 旗舰版 切换 中英文 界面
http://jingyan.baidu.com/article/f7ff0bfc4963612e26bb131e.html 如果遇到:想下载英语语言包,但是出现代码80070643,windowsu ...
- QT中给程序加上主界面的图标
首先在源码目录下面新建一个 myapp.rc的文件,在里面填写如下: IDI_ICON1 ICON DISCARDABLE "myappico.ico" (名字看自己的图片,注意图 ...
- iOS如何让主界面不显示NavigationBar
这个问题曾经困扰过我.现在我给出正解.- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self ...
- 通过windowmanager在camera界面上显示内容
Window与WindowManager机制https://www.jastrelax.com/android/2018-03-08-android-window/ [Android开发艺术探索阅读笔 ...
- windows窗口分析,父窗口,子窗口,所有者窗口
(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...
- c++小学期大作业攻略(二)整体思路+主界面
写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...
随机推荐
- shell脚本一一项目5
主题:一键查看占用内存.cpu高的进程 echo "----------------cpu top 10 list----------------"ps -eo pid,pcpu, ...
- KETTLE——初见KETTLE
(PS:这是很早以前在CSDN上发过的,那个账号不想用了,所以搬过来) 就在前一段时间,因为公司需要突然被老大告知要用一个ETL工具,第一次知道这么个工具,完全不知道是做什么的.大概问了一下,说是一种 ...
- [Usaco2005 mar]Yogurt factory 奶酪工厂
接下来的N(1≤N10000)星期中,奶酪工厂在第i个星期要花C_i分来生产一个单位的奶酪.约克奶酪工厂拥有一个无限大的仓库,每个星期生产的多余的奶酪都会放在这里.而且每个星期存放一个单位的奶酪要花费 ...
- linux command --- terminal common commands
switch to root : sudo su.su root.sudo -s switch to users : su god(user name) set root password : sud ...
- CENTOS6.5 编译安装MySQL5.7.14
前言 mysql5.7.14 编译安装在自定义文件路径下 下载安装包 配置安装环境 编译安装 cmake \ -DCMAKE_INSTALL_PREFIX=/data/db5714 \ -DMYSQL ...
- python之设置windows背景图片
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' from PIL import Image impo ...
- RPC-基于原生java实现
一:什么是RPC 远程过程调用(Remote Procedure Call).就是调用其他业务方的方法的时候,就像是调用自己本地的方法一样. 二:java rpc实现简介 服务端(使用反射) (1)服 ...
- [2019杭电多校第三场][hdu6608]Fansblog
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6608 大致题意是比p小的最大素数q,求q!%p的值. 由威尔逊定理开始推: $(p-1)!\equiv ...
- Count on a tree SPOJ 10628 主席树+LCA(树链剖分实现)(两种存图方式)
Count on a tree SPOJ 10628 主席树+LCA(树链剖分实现)(两种存图方式) 题外话,这是我第40篇随笔,纪念一下.<( ̄︶ ̄)↗[GO!] 题意 是说有棵树,每个节点上 ...
- INPUT输入子系统——按键
一.什么是input输入子系统? 1.1. Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型.不同原理.不同的 ...