读书人

怎么在vs2003 winform的datagrid里增加

发布时间: 2012-01-02 22:40:04 作者: rapoo

如何在vs2003 winform的datagrid里增加一列checkbox?
如题

[解决办法]
好久 都没有用 VS2003

工具也被我 卸掉了.
[解决办法]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test
{
public partial class f_datagrid : Form
{
public f_datagrid()
{
InitializeComponent();
PopulateGrid();
}

private void f_datagrid_Load(object sender, EventArgs e)
{

}
// public FrmCustomerDataGrid()
//{
// InitializeComponent();
// PopulateGrid();
//}
DataTable dt;
private void PopulateGrid()
{
///创建填充数据的表结构
dt = new DataTable ( "dtPerson ");
string [] strTitles = new string [3] { "姓名 ", "学历 ", "职务 "};
DataColumn dc = null;

//创建前面三列,全部是字符串类型,第一列列名为 "姓名 ",第二列为“学历”,第三列“职务”
for(int i = 0; i < 3; i++)
{
dc = new DataColumn(strTitles[i]);
dc.DataType = Type.GetType( "System.String ");
dc.DefaultValue = string.Empty;
dt.Columns.Add(dc);
}

//创建第四列,Bool类型,列名 "在职 "
dc = new DataColumn( "在职 ");
dc.DataType = System.Type.GetType( "System.Boolean ");
dc.DefaultValue = false;
dt.Columns.Add(dc);

//指—ataGrid数据源
dbgNewGrid.DataSource = dt;

//为定义的DataGrid取名 "Style_Person "

if(!dbgNewGrid.TableStyles.Contains( "Style_Person "))
{
//定制DataGridTableStyle,用于整个DataGrid
DataGridTableStyle dbgStyle = new DataGridTableStyle();
dbgStyle.MappingName = dt.TableName;
dbgNewGrid.TableStyles.Add(dbgStyle);
dbgStyle.RowHeadersVisible = false;
dbgStyle.HeaderBackColor = Color.LightSteelBlue;
dbgStyle.AllowSorting = false;
dbgStyle.HeaderBackColor = Color.FromArgb(8,36,107);
dbgStyle.RowHeadersVisible = false;
dbgStyle.HeaderForeColor = Color.White;
dbgStyle.HeaderFont = new System.Drawing.Font( "Microsoft Sans Serif ", 9F,
System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
dbgStyle.GridLineColor = Color.DarkGray;
dbgStyle.PreferredRowHeight = 22;
dbgNewGrid.BackgroundColor = Color.White;

//通过GridColumnStyles设置列属性,以下设置列的宽度
GridColumnStylesCollection colStyle = dbgNewGrid.TableStyles[0].GridColumnStyles;
colStyle[0].Width = 50;//姓名
colStyle[1].Width = 100;//学历
colStyle[2].Width = 50;//职务
colStyle[3].Width = 40;//是否在职
}

//下面定制“学历”列,这里若要定制其他列可以修改GridColumnStyles[1]中的数值
DataGridTextBoxColumn dgTextBoxColumn = (DataGridTextBoxColumn)dbgNewGrid.TableStyles[0].GridColumnStyles[1];
//定制为ComboBox类型,若想定义成其他类型的可以在这里定制
ComboBox dgComboBoxColumn = new ComboBox();
dgComboBoxColumn.Items.AddRange(new object[]{ "本科 ", "硕士 ", "博士 "});//添加选项
dgComboBoxColumn.Cursor = Cursors.Arrow;
dgComboBoxColumn.DropDownStyle= ComboBoxStyle.DropDownList;
dgComboBoxColumn.Dock = DockStyle.Fill;
///在选定项发生更改并且提交了该更改后发生

dgComboBoxColumn.SelectionChangeCommitted += new EventHandler(dgComboBoxColumn_SelectionChangeCommitted);
///把ComboBox添加到DataGridTableStyle的第一列
///在默认的TextBox控件里面添加入你所定义的控件


dgTextBoxColumn.TextBox.Controls.Add(dgComboBoxColumn);
}

//设置焦点模拟
private void GetFocus(int row,int col)
{
///先把焦点移动到DataGrid
this.dbgNewGrid.Focus();
// 把焦点移动到DataGridCell
DataGridCell dgCell = new DataGridCell(row,col);
this.dbgNewGrid.CurrentCell = dgCell;
DataGridTextBoxColumn dgTextBoxColumn = (DataGridTextBoxColumn)dbgNewGrid.TableStyles[0].GridColumnStyles[col];
///设置焦点
dgTextBoxColumn.TextBox.Focus();
}

//把Combobox上修改的数据提交到当前的网格
private void dgComboBoxColumn_SelectionChangeCommitted (object sender, EventArgs e )
{
dbgNewGrid[this.dbgNewGrid.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();
}
///设置新的焦点
private void btnFocus_Click(object sender, System.EventArgs e)
{
//焦点模拟,这里设置第三行第一列
GetFocus(2,0);
}

}
}
[解决办法]
这个只能在后台动态进行添加
楼上的方法好像还行

读书人网 >C#

热点推荐