Winform动态加载TabControl用法实例

本文实例讲述了Winform动态加载TabControl用法。分享给大家供大家参考。

具体实现代码如下:

代码如下:

private void BindTabData()
{
    dtIPD = new DataTable();
    //drItem = new DataTable();
    //获取【项目大类】列表显示于 TabPage
    MRD_Score model = new MRD_Score();
    model.ActiveFlag = "Y";
    DataTable dtScore = fmed.GetScoreType(model);
    foreach (DataRow dr in dtScore.Rows)
    {
 MRD_Score sr = new MRD_Score();
 sr.PCode = dr["ProCode"].ToString();

TabPage tabpage = new System.Windows.Forms.TabPage(dr["ProName"].ToString().Trim());
 tabpage.Name = dr["ProName"].ToString().Trim();
 tabpage.AutoScroll = true;
 tabpage.Text = dr["ProName"].ToString().Trim();
 //获取大类下的 缺陷项目列表  txtIPD_NO.Text.Trim()
       DataTable  drItem = fmed.getScoreItemType(sr.PCode, "");
 drItem.Columns.Add("缺陷数", Type.GetType("System.Int32"));
 drItem.Columns.Add("已审核", Type.GetType("System.Int32"));
 drItem.Columns.Add("评分时间", Type.GetType("System.String"));
 drItem.Columns.Add("评分人", Type.GetType("System.String"));
 drItem.Columns.Add("审核时间", Type.GetType("System.String"));
 drItem.Columns.Add("审核人", Type.GetType("System.String"));
 DataGridView dgv = new DataGridView();
 dgv.AllowUserToAddRows = false;//禁用新增
 dgv.AllowUserToDeleteRows = false; //禁用删除
 dgv.Width = 960;
 dgv.Height = 600;
 dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;

dgv.CellValidating += new DataGridViewCellValidatingEventHandler(dgv_CellValidating);//验证是否为数字
 dgv.CellBeginEdit += new DataGridViewCellCancelEventHandler(dgv_CellBeginEdit);// 设置 是否可以编辑
 dgv.CellEndEdit += new DataGridViewCellEventHandler(dgv_CellEndEdit);
 //dgv.CellFormatting += new DataGridViewCellFormattingEventHandler(dgv_CellFormatting);
 dgv.DataSource = drItem;
 dtIPD = fmed.getScoreItemType(sr.PCode, txtIPD_NO.Text.Trim());
 tabpage.Controls.Add(dgv);
 this.tabControl1.Controls.Add(tabpage);
 SetInputValue(dgv, dtIPD);//加载已经输入的分值
 total += getDeFen(dgv, dtIPD);

dgv.Columns["PCode"].Visible = false;
 dgv.Columns["ItemCode"].Visible = false;
 dgv.Columns["评分人"].Visible = false;
 dgv.Columns["审核人"].Visible = false;
    }
}

代码如下:

private void GetTolSum()
{
    if (tabControl1.TabCount == 0)
    {
 txtScore.Clear();
 txtLevel.Clear();
 return;
    }
    double tolsource = 0.00;
    for (int i = 0; i < tabControl1.TabCount; i++)
    {
 if (!tabControl1.TabPages[i].HasChildren)
 {
     continue;
 }
 tolsource += SumDgv((DataGridView)tabControl1.TabPages[i].Controls[0]);
    }
    GetScoreLevel(tolsource);
    SaveTol();

}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#实现winform渐变效果的方法

    本文实例实现一个启动画面,采用了显示Aform,过一段时间,隐藏这个Aform,showdialog下一个Bform,closeAForm这个方法来做了,不知道大家有没有更好的办法. 设定程序从Aform启动: 复制代码 代码如下: static void Main()  {    Application.EnableVisualStyles();    Application.SetCompatibleTextRenderingDefault(false);    Application.Ru

  • C#之WinForm跨线程访问控件实例

    本文实例讲述了C#中WinForm跨线程访问控件的实现方法,分享给大家供大家参考. 具体实现方法如下: 1.跨线程访问控件委托和类的定义 复制代码 代码如下: using System; using System.Windows.Forms; namespace ahwildlife.Utils {     /// <summary>     /// 跨线程访问控件的委托     /// </summary>     public delegate void InvokeDeleg

  • Winform启动另一个项目传值的方法

    本文实例讲述了Winform启动另一个项目传值的方法.分享给大家供大家参考.具体如下: 背景:从A项目中登陆后,跳转到B项目的某个页面(B不再登陆). A项目启动进程: 复制代码 代码如下: public Form1() {     InitializeComponent(); } #region 调用进程 [DllImport("Shell32.dll")] private static extern int ShellExecute(      IntPtr hwnd,     

  • Winform基于多线程实现每隔1分钟执行一段代码

    本文实例讲述了Winform基于多线程实现每隔1分钟执行一段代码的方法,分享给大家供大家参考.具体实现方法如下: 1.定义相关的类Timer.cs,代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace SMIS2013.DSS.Monitor {     public class

  • WinForm窗体间传值的方法

    本文实例讲述了WinForm窗体间传值的方法.分享给大家供大家参考.具体实现方法如下: 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式:   1.公共静态变量: 2.使用共有属性: 3.使用委托与事件: 4.通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双向的,实现简单   实现代码如下: 在一个app类中定义一个静态成员value 复制代码 代码如下: public class app { public static string value

  • Winform实现抓取web页面内容的方法

    本文以一个非常简单的实例讲述了Winform实现抓取web页面内容的方法,代码简洁易懂,非常实用!分享给大家供大家参考. 具体实现代码如下: WebRequest request = WebRequest.Create("http://1.bjapp.sinaapp.com/play.php?a=" + PageUrl); WebResponse response = request.GetResponse(); Stream resStream = response.GetRespo

  • 在Winform动态启动、控制台命令行的方法

    需求winForm 程序输出类型为 windows 程序(不是命令行程序)在运行时想输入一些信息编译开发调试,如何实现这一功能 解答: AllocConsole.FreeConsole 这两个 API 可以在任何时候调用和关闭 命令行. 代码演示:API 部分 复制代码 代码如下: using System.Runtime.InteropServices; namespace WindowsFormsApplication1{    public partial class NativeMeth

  • Winform中Treeview实现按需加载的方法

    本文实例讲述了Winform中Treeview实现按需加载的方法,非常具有实用价值.分享给大家供大家参考.具体分析如下: 最近项目里用到treeview,原先设计的是一开始就把所有数据都加载到treeview里,后来发现客户的数据量实在太大,加载所有数据要2分钟,这个是客户没法接受的.后来就考虑到用户也不是一开始就要看所有的数据,用户也是一层一层地展开,所以我们就考虑是不是可以实现以当用户展开某个结点时才加载当前结点下面的数据.一番查找后,发现treeview有BeforeExpand事件可以实

  • WinForm的延时加载控件概述

    本文主要针对WinForm的延迟加载在常用控件的实现做简单的描述.在进行C#项目开发的时候具有一定的实用性.具体如下: 一.在界面第一次显示时加载.最简单的延迟加载可以通过控件第一次显示时加载数据,例如你有很多的页签,只有用户切换到这个页签时,才会加载数据. 在.NET的Control中提供SetVisibleCore虚方法,当检测value是true且第一次调用此方法时,调用延迟加载.但是并不推荐这个方法,因为你有更好的地方. ①.如果你的控件继承自Form或者UserControl,建议重载

  • winform基于异步委托实现多线程摇奖器

    本文实例讲述了winform基于异步委托实现多线程摇奖器.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using Sys

随机推荐