winform的TabContorl的TabPage动态添加滚动条
关键属性 AutoScrollMinSize
private int minWidth = 800;
private int minHeight = 600;
List<Form> listForm = new List<Form>();
private Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前程序集
private void navMenu_MenuItemClick(string itemText, int menuIndex, int pageIndex)
{
string name = "";
string title = "";
foreach (TreeNode item in navMenu.Nodes[navMenu.SelectedIndex].Nodes)
{
if (item.Text == itemText)
{
name = item.Name;
title = item.Text;
break;
}
}
//获取屏幕除了任务栏的高宽
int w = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
//高度减去系统标题头的高度
int h = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - 100; Sunny.UI.Common.ShowWaitForm();
try
{
//检测当前FORM是否存在。
Form form = listForm.SingleOrDefault(a => a.Name == name);
if (form != null && form.IsDisposed)
{
listForm.Remove(form);
form = null;
}
if (form == null)
{
//新建page
TabPage tabPage = new TabPage();
tabPage.Name = name + "_tab";
tabPage.Tag = name;
tabPage.TabIndex = listForm.Count;
tabPage.Text = title;
tabPage.UseVisualStyleBackColor = true;
tabPage.AutoScroll = true;
tabPage.AutoScrollMinSize = new Size(w, h);
mianTabContorl.Controls.Add(tabPage);
//新建panel,网上听说要添加pannel。可是没用
//UIPanel uIPanel = new UIPanel();
//uIPanel.Font = new System.Drawing.Font("微软雅黑", 9F);
//uIPanel.Text = "";
//uIPanel.Dock = DockStyle.Fill;
//uIPanel.AutoScroll = true;
//uIPanel.MinimumSize = new Size(minWidth, minHeight);
//tabPage.Controls.Add(uIPanel);
//根据命名空间.类名动态创建Form对象
form = (Form)assembly.CreateInstance("TestProduct." + name);
form.MdiParent = this;
form.FormBorderStyle = FormBorderStyle.None;
//form.Parent = uIPanel;
form.Parent = tabPage;
//不可使用WindowState
// form.WindowState = FormWindowState.Maximized;
//设置最大高宽,最小高宽
form.MinimumSize = new Size(w, h);
//填充pannel
form.Dock = DockStyle.Fill;
form.Show(); listForm.Add(form);
mianTabContorl.SelectedTab = tabPage;
}
else
{
mianTabContorl.SelectedTab = GetTabPage(form.Name);
} }
catch (Exception ex)
{
Sunny.UI.Common.ShowErrorDialog("错误消息:" + ex.Message);
}
finally
{
Sunny.UI.Common.HideWaitForm();
}
}
private TabPage GetTabPage(string name)
{
TabPage tb = null;
foreach (TabPage item in mianTabContorl.TabPages)
{
if (item.Tag.ToString() == name)
{
tb = item;
}
}
return tb;
}
winform的TabContorl的TabPage动态添加滚动条的更多相关文章
- winform中动态生成多行label,同时添加滚动条
设计思路大概是这样的,Form内添加一个groupBox,groupBox内添加一个panel,panel的属性AutoScroll=true,在panel内动态添加label. 原始From如下: ...
- winform导入导出excel,后台动态添加控件
思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...
- 通过源码了解ASP.NET MVC 几种Filter的执行过程 在Winform中菜单动态添加“最近使用文件”
通过源码了解ASP.NET MVC 几种Filter的执行过程 一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神 ...
- winform窗体传值和动态添加控件
1.跳转窗体时传值 //将要显示的页面实例化 RoleMenuForm rmf = new RoleMenuForm(); try { //在此给RoleMenuForm 窗体中的变量roleId传值 ...
- Mono for android 如何动态添加View,线程内部如何更新UI.
貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...
- VC中动态添加控件
VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...
- C# DataGridView控件动态添加新行
C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...
- C#控制IIS动态添加删除网站
我的目的是在Winform程序里面,可以直接启动一个HTTP服务端,给下游客户连接使用. 查找相关技术,有两种方法: 1.使用C#动态添加网站应用到IIS中,借用IIS的管理能力来提供HTTP接口.本 ...
- C# Winform TabControl 双击关闭TabPage
在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...
- C# WPF后台动态添加控件(经典)
概述 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题. 这里要用到UniformGrid布局 ...
随机推荐
- KingbaseES 归档日志清理
WAL是Write Ahead Log的简写,和Oracle的redo日志类似,在R3版本存放在data/sys_log中,R6版本以后在data/sys_wal目录,在数据库访问过程中,任何对数据块 ...
- 如何结合整洁架构和MVP模式提升前端开发体验(二) - 代码实现篇
上一篇文章介绍了整体架构,接下来说说怎么按照上图的分层结构实现下面的增删改查的功能. 代码结构 vue userManage └── List ├── api.ts ├── EditModal │ ├ ...
- LibTorch 多项分布
最近在学习过程中需要对服从某种分布的离散型随机变量进行抽样,在LibTroch中查到了torch::multinomial(多项分布),该方法的接口如下: at::Tensor multinomial ...
- docker学习笔记一-docker安装与卸载
环境查看 # 1 查询当前centOS的版本,官方要求版本为7以上 uname -r 查询系统内核 cat /etc/os-release 系统版本 安装 # 1.卸载旧版本 yum remove d ...
- linux使用iptables屏蔽ip地址
一.iptables命令介绍: netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,在安装系统的时 ...
- ProxySQL(9):ProxySQL的查询缓存功能
文章转载自: https://www.cnblogs.com/f-ck-need-u/p/9314459.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查 ...
- 6.使用nexus3配置yum私有仓库
yum相较于rpm,能够更好地解决安装软件时的依赖包问题,使用yum安装更简单更方便.搭建本地YUM源服务器,可以避免升级安装软件时占用公网带宽:有了本地YUM源服务器,可以解决无法连接Interne ...
- 7.prometheus监控多个MySQL实例
mysqld_exporter集中部署 集中部署,就是说我们将所有的mysqld_exporter部署在同一台服务器上,在这台服务器上对mysqld_exporter进行统一的管理,下面介绍一下集中部 ...
- Git pull 强制拉取并覆盖本地代码
git fetch --all git reset --hard origin/master git pull
- JavaScript根据参数获取url中参数名的值
//假设ulr如下var localhost="http://127.0.0.1?name=tom&sex=男&id=1";//正则方法封装function Get ...