关键属性 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动态添加滚动条的更多相关文章

  1. winform中动态生成多行label,同时添加滚动条

    设计思路大概是这样的,Form内添加一个groupBox,groupBox内添加一个panel,panel的属性AutoScroll=true,在panel内动态添加label. 原始From如下: ...

  2. winform导入导出excel,后台动态添加控件

    思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...

  3. 通过源码了解ASP.NET MVC 几种Filter的执行过程 在Winform中菜单动态添加“最近使用文件”

    通过源码了解ASP.NET MVC 几种Filter的执行过程   一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神 ...

  4. winform窗体传值和动态添加控件

    1.跳转窗体时传值 //将要显示的页面实例化 RoleMenuForm rmf = new RoleMenuForm(); try { //在此给RoleMenuForm 窗体中的变量roleId传值 ...

  5. Mono for android 如何动态添加View,线程内部如何更新UI.

    貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...

  6. VC中动态添加控件

    VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...

  7. C# DataGridView控件动态添加新行

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  8. C#控制IIS动态添加删除网站

    我的目的是在Winform程序里面,可以直接启动一个HTTP服务端,给下游客户连接使用. 查找相关技术,有两种方法: 1.使用C#动态添加网站应用到IIS中,借用IIS的管理能力来提供HTTP接口.本 ...

  9. C# Winform TabControl 双击关闭TabPage

    在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...

  10. C# WPF后台动态添加控件(经典)

    概述 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题. 这里要用到UniformGrid布局 ...

随机推荐

  1. KingbaseFlySync 版本升级

    关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 拓扑图: 客户现场源端和目标端写在一个flysync.ini中,所以不单独把目标端拿出来 ...

  2. gin如何多次shoubind一个请求参数

    gin多次绑定请求参数 package main import ( "fmt" "net/http" "time" "github ...

  3. Batch Norm 与 Layer Norm 比较

    一.结论 Batch Norm一般用于CV领域,而Layer Norm一般用于NLP领域 Batch Norm需要计算全局平均,而Layer Norm不需要计算全局平均 二.Batch Norm Ba ...

  4. DFS算法-求集合的所有子集

    目录 1. 题目来源 2. 普通方法 1. 思路 2. 代码 3. 运行结果 3. DFS算法 1. 概念 2. 解题思路 3. 代码 4. 运行结果 4. 对比 1. 题目来源 牛客网,集合的所有子 ...

  5. Linux Netlink学习笔记

    参考链接:https://www.systutorials.com/docs/linux/man/7-netlink/ 1. 监听Netlink消息类型示例 Netlink是用户程序与内核通信的soc ...

  6. Vmware部署Linux无人值守安装Centos7系统

    Linux - 无人值守安装服务 # 需求分析 - 使用光盘镜像来安装 Linux 系统的方式; 坦白讲, 该方法适用于只安装少量 Linux 系统的情况, 如果生产环境中有数百台服务器都需安装系统, ...

  7. 利用分层机制优化 Docker Image

    文章转载自:https://mp.weixin.qq.com/s/FrIOIquHVsCTEMfHiF87MA 假设系统中我们有两个应用 App1 和 App2.这两个节点的环境信息如下: 通过上表环 ...

  8. Beats:为 Beats => Logstash => Elasticsearch 架构创建 template 及 Dashboard

    文章转载自:https://elasticstack.blog.csdn.net/article/details/115341977 前一段时间有一个开发者私信我说自己的 Beats 连接到 Logs ...

  9. CentOS系统一键部署jdk,maven,tomcat,mysql

    #!/bin/bash ####使用方法############### # chmod a+x JdTomK-Auto.sh # source JdTomK-Auto.sh ############# ...

  10. 基于CentOS 8服务器来搭建FastDFS高可用集群环境

    服务器版本 我们在服务器的命令行输入如下命令来查看服务器的内核版本. [root@localhost lib]# cat /etc/redhat-release CentOS Linux releas ...