关键属性 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. Nginx+lua+openresty精简系列

    1. CentOS系统安装openresty 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令).运行下面的 ...

  2. k8s pod被驱逐问题分析及解决

  3. Elasticsearch:top_hits aggregation

    top_hits指标聚合器跟踪要聚合的最相关文档. 该聚合器旨在用作子聚合器,以便可以按存储分区汇总最匹配的文档. top_hits聚合器可以有效地用于通过存储桶聚合器按某些字段对结果集进行分组. 一 ...

  4. Query String Query和Sumple Query String

  5. win10系统应用商店打开后无法联网 代码: 0x80131500 的解决办法

    官方提供的建议网址: https://answers.microsoft.com/zh-hans/windows/forum/all/代码/cbbe7aaf-8f66-4779-89c8-3c74f5 ...

  6. k8s中使用到的各种证书图示

  7. C++自学笔记 Composition:对象组合

    继承是实现软件重用的一种方式. 在C++中拥有另一种实现软件重用的方式----- Composition:对象组合 用已经有的对象制造新的对象 (设计一个类的时候它的成员变量可以是另一个类的对象) 对 ...

  8. python-函数-统计函数

    #(1)amax(),amin() 作用:计算数组中的元素沿指定轴的最大值,最小值 import numpy as np x = np.random.randint(1,11,9).reshape(( ...

  9. 制造企业有可能自行开发ERP系统吗?

    当然可以啊! 生产企业对于ERP的需求是一直存在的,但市场上多为标准化的产品,与企业的个性化需求矛盾着. 有很多制造企业自行开发ERP系统啊!只是各个企业成效不同而已,毕竟不同企业的IT开发能力不同而 ...

  10. C++面向对象编程之reference

    1.声明 reference 一定要有初值,指针可以不用设初值 2. int& r = x; 表示 r 代表 x, r 用起来就是 x ,而且 reference 设完初值后再也不能代表其他变 ...