不知道说清楚没有?
就是我的窗口分为两部分,
左边,控制部分,由一些按钮组成
右边,显示部分,由些控件(如下拉,文本等等组成)

左边的每个按钮对应显示部分的页面,也就是说,左边换一个按钮点,那么右边就显示其相应的内容.
比如,左边有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;
}
是多余的

转载于:https://www.cnblogs.com/blogpro/p/11459887.html

C# windows窗口应用程序切换主界面的显示内容相关推荐

  1. vc 下编写的 Windows窗口小程序 计算机

    对于一个Windows窗口计算器小程序 解释 #include "stdafx.h" #include <windows.h> #include <windows ...

  2. WIN32程序,在界面上显示网页的C++代码源码

    本篇文章属于<518超市播音软件开发日志>系列文章的一部分. 我在开发<518超市播音软件>(http://www.518boyin.com/)的时候,需要在界面上显示一个HT ...

  3. python如何切换windows窗口_selenium+python 切换窗口的几种方法

    第一种方法: 使用场景: 打开多个窗口,需要定位到新打开的窗口 使用方法: # 获取打开的多个窗口句柄 windows = driver.window_handles # 切换到当前最新打开的窗口 d ...

  4. android 悬浮窗口和主界面同时显示,Android 悬浮窗口(及解决6.0以上无法显示问题)...

    思路实现 通过WindowManager添加一个View,创建一个系统顶级的窗口,实现悬浮窗口的效果. 本篇思路,来源于郭霖大神的悬浮窗口教程. 大致介绍WindowManager 类 创建的对象: ...

  5. C/C++编写Windows窗口应用程序(Win32程序),非黑漆漆的控制台窗口

     Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息. 一. 窗口的创建流程 创建一个完整的窗口需要经过下面四个操作步骤: 设计一个窗口类 ...

  6. 微信小程序多选取值判断显示内容

    写微信小程序项目的时候 遇到多选框选值通过id来判断内容切换 这里是通过wxs来实现的 wxml <wxs module="calc">function getId(a ...

  7. 微信小程序创建项目后无法显示内容

    我遇见这个问题属于其一,建议多找几种办法 因为我一星期之前为了做其他项目,下载了其他的开发工具 最后把工具卸载掉,重新安装新版的稳定版. 问题完美解决!!! 开始创建项目,项目创建完后, 普通编译和页 ...

  8. c++qq主界面_QQ小程序,一个被严重低估的超级流量池!错过你就亏大了

    不同于微信小程序上线时的火爆,于去年11月才上线的QQ小程序(又叫轻应用)就显得低调很多,很少见轻应用的通告,QQ中也很少见对用户使用轻应用的引导. 但是,如果你因此认为QQ轻应用不堪大用,那你很容易 ...

  9. Processing零基础傻瓜入门教程-下载与安装与主界面简介

    某绿(笔者)作为一名设计系的学生,其中一门课便要用到此软件,于是,一问三不知的某绿就开始了漫长的processing之路. 此软件的简介以及用途某绿在此文章中不提及,想必想要使用的你已经初步了解过.( ...

最新文章

  1. Hibernate,get,load,find方法解析
  2. linux怎么和宿主机同步时间,Linux 中设置和同步时间
  3. python find函数 和index的区别_【全网最简单Python教程】--10.列表元素的索引和返回索引值(Index函数使用)...
  4. java 等待几秒_Java并发编程synchronized相关面试题总结
  5. 学习响应式BootStrap来写融职教育网站,Bootsrtap第三天nav布局
  6. mysql -- MAC下安装配置mysql
  7. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
  8. Arch Linux 安装总结
  9. WebSocket笔记(一) 初步认识
  10. 计算机常用汉字输入法的使用,计算机的基本操作汉字输入法--.ppt
  11. Dubbox服务的消费方配置
  12. 广东全国计算机2018年报名时间,2018年3月广东计算机等级考试报名时间
  13. 基于SSM的网上购物系统
  14. 萤石摄像头实现抓拍短视频
  15. Golang导出并下载excel封装
  16. SAP ABAP MOVE-CORRESPONDING ... TO ...的使用
  17. LL(1)文法中FIRST集和FOLLOW集的计算方法
  18. Node之加密与解密处理
  19. BME相关SCI期刊
  20. 搜索框输入内容进行查找匹配

热门文章

  1. conda安装与使用--ubuntu20.04
  2. 简易四六级刷题网站(一键帮你对答案)
  3. x86-64汇编入门
  4. 什么是POJO?没有你想象中那么复杂!
  5. Everything工具设置书签
  6. ACCESS数据库的压缩,备份,还原,下载,删除的实现
  7. SCCB协议介绍与应用和OV7670摄像头的寄存器配置
  8. 搭建股票数据api接口过程中会遇到什么问题?
  9. Linux云计算学习笔记day39
  10. 国际上公认的IT证书