www.csharphelp.com里的确有相关的文章<playing with datagrid>而且经过修改已经能运行了。
//include all the required namespaces
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Text; using System.Xml; namespace Test { public class TestDataGrid : System.Windows.Forms { /// <summary> /// Required designer variable. /// </summary> private System.Windows.Forms.ComboBox cmbFunctionArea; private DataTable dtblFunctionalArea; private DataGrid dgdFunctionArea;
/// <summary> /// public constructor /// </summary> public TestDataGrid() { //automatically generated by the VS Designer //creates the object of the above designer variables InitializeComponent(); PopulateGrid(); }
private void PopulateGrid() { //Declare and initialize local variables used DataColumn dtCol = null;//Data Column variable string[] arrstrFunctionalArea = null;//string array variable System.Windows.Forms.ComboBox cmbFunctionArea; //combo box var DataTable dtblFunctionalArea;//Data Table var
//Create the combo box object and set its properties cmbFunctionArea = new ComboBox(); cmbFunctionArea.Cursor = System.Windows.Forms.Cursors.Arrow; cmbFunctionArea.DropDownStyle=System.Windows.Forms.ComboBoxStyle.DropDownList; cmbFunctionArea.Dock = DockStyle.Fill; //Event that will be fired when selected index in the combo box is changed cmbFunctionArea.SelectionChangeCommitted += new EventHandlercmbFunctionArea_SelectedIndexChanged);
//Create the String array object, initialize the array with the column //names to be displayed arrstrFunctionalArea = new string [3]; arrstrFunctionalArea[0] = "Functional Area"; arrstrFunctionalArea[1] = "Min"; arrstrFunctionalArea[2] = "Max";
//Create the Data Table object which will then be used to hold //columns and rows dtblFunctionalArea = new DataTable ("FunctionArea");
//Add the string array of columns to the DataColumn object for(int i=0; i< 3;i++) { string str = arrstrFunctionalArea[i]; dtCol = new DataColumn(str); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblFunctionalArea.Columns.Add(dtCol); }
//Add a Column with checkbox at last in the Grid DataColumn dtcCheck = new DataColumn("IsMandatory");//create the data //column object with the name dtcCheck.DataType = System.Type.GetType("System.Boolean");//Set its //data Type dtcCheck.DefaultValue = false;//Set the default value dtblFunctionalArea.Columns.Add(dtcCheck);//Add the above column to the //Data Table //Set the Data Grid Source as the Data Table createed above dgdFunctionArea.DataSource = dtblFunctionalArea;
//set style property when first time the grid loads, next time onwards it //will maintain its property if(!dgdFunctionArea.TableStyles.Contains("FunctionArea")) { //Create a DataGridTableStyle object DataGridTableStyle dgdtblStyle = new DataGridTableStyle(); //Set its properties dgdtblStyle.MappingName = dtblFunctionalArea.TableName;//its table name of dataset dgdFunctionArea.TableStyles.Add(dgdtblStyle); dgdtblStyle.RowHeadersVisible = false; dgdtblStyle.HeaderBackColor = Color.LightSteelBlue; dgdtblStyle.AllowSorting = false; dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107); dgdtblStyle.RowHeadersVisible = false; dgdtblStyle.HeaderForeColor = Color.White; dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); dgdtblStyle.GridLineColor = Color.DarkGray; dgdtblStyle.PreferredRowHeight = 22; dgdFunctionArea.BackgroundColor = Color.White; //Take the columns in a GridColumnStylesCollection object and set //the size of the //individual columns GridColumnStylesCollection colStyle; colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles; colStyle[0].Width = 100; colStyle[1].Width = 50; colStyle[2].Width = 50; colStyle[3].Width = 80; } //To add the combo box dynamically to the data grid, you have to take the // Text Box that is present (by default) in the column where u want to add //this combo box (here it is first column i.e. Functional Area).From the //tablestyles of the data grid take the grid column styles of the column //where you want to add the combo box respectively. DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0]; //Add the combo box to the text box taken in the above step dgtb.TextBox.Controls.Add (cmbFunctionArea);
//Note: After these add the code to fill the details in the grid by //establishing // connection to the server and writing necessary steps: } }//end of the class }//end of the namespace
我总共在csharphelp上发现了5个不同版本的类似代码。 有好有不好,我在整理中......
那个源程序是错的 第一个错误 类声明应该为: public class TestDataGrid : System.Windows.Forms.Form 第二个错误 掉了一个( :)
我正在尝试中......
我正在消化中,等我彻底弄清楚了,我会将之改写成C#, 有哪位需要的留个mail, 适当给些分就行了。
我还在整理改写中,明天应该可以完成初稿,到时我mail给你。
谢谢
[email protected]
[email protected]
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Xml;
namespace Test
{
public class TestDataGrid : System.Windows.Forms
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.Windows.Forms.ComboBox cmbFunctionArea;
private DataTable dtblFunctionalArea;
private DataGrid dgdFunctionArea;
/// <summary>
/// public constructor
/// </summary>
public TestDataGrid()
{
//automatically generated by the VS Designer
//creates the object of the above designer variables
InitializeComponent();
PopulateGrid();
}
private void PopulateGrid()
{
//Declare and initialize local variables used
DataColumn dtCol = null;//Data Column variable
string[] arrstrFunctionalArea = null;//string array variable
System.Windows.Forms.ComboBox cmbFunctionArea; //combo box var
DataTable dtblFunctionalArea;//Data Table var
//Create the combo box object and set its properties
cmbFunctionArea = new ComboBox();
cmbFunctionArea.Cursor = System.Windows.Forms.Cursors.Arrow;
cmbFunctionArea.DropDownStyle=System.Windows.Forms.ComboBoxStyle.DropDownList;
cmbFunctionArea.Dock = DockStyle.Fill;
//Event that will be fired when selected index in the combo box is changed
cmbFunctionArea.SelectionChangeCommitted += new EventHandlercmbFunctionArea_SelectedIndexChanged);
//Create the String array object, initialize the array with the column
//names to be displayed
arrstrFunctionalArea = new string [3];
arrstrFunctionalArea[0] = "Functional Area";
arrstrFunctionalArea[1] = "Min";
arrstrFunctionalArea[2] = "Max";
//Create the Data Table object which will then be used to hold
//columns and rows
dtblFunctionalArea = new DataTable ("FunctionArea");
//Add the string array of columns to the DataColumn object
for(int i=0; i< 3;i++)
{
string str = arrstrFunctionalArea[i];
dtCol = new DataColumn(str);
dtCol.DataType = System.Type.GetType("System.String");
dtCol.DefaultValue = "";
dtblFunctionalArea.Columns.Add(dtCol);
}
//Add a Column with checkbox at last in the Grid
DataColumn dtcCheck = new DataColumn("IsMandatory");//create the data //column object with the name
dtcCheck.DataType = System.Type.GetType("System.Boolean");//Set its //data Type
dtcCheck.DefaultValue = false;//Set the default value
dtblFunctionalArea.Columns.Add(dtcCheck);//Add the above column to the //Data Table //Set the Data Grid Source as the Data Table createed above
dgdFunctionArea.DataSource = dtblFunctionalArea;
//set style property when first time the grid loads, next time onwards it //will maintain its property
if(!dgdFunctionArea.TableStyles.Contains("FunctionArea"))
{
//Create a DataGridTableStyle object
DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
//Set its properties
dgdtblStyle.MappingName = dtblFunctionalArea.TableName;//its table name of dataset
dgdFunctionArea.TableStyles.Add(dgdtblStyle);
dgdtblStyle.RowHeadersVisible = false;
dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;
dgdtblStyle.AllowSorting = false;
dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);
dgdtblStyle.RowHeadersVisible = false;
dgdtblStyle.HeaderForeColor = Color.White;
dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
dgdtblStyle.GridLineColor = Color.DarkGray;
dgdtblStyle.PreferredRowHeight = 22;
dgdFunctionArea.BackgroundColor = Color.White; //Take the columns in a GridColumnStylesCollection object and set //the size of the
//individual columns
GridColumnStylesCollection colStyle;
colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;
colStyle[0].Width = 100;
colStyle[1].Width = 50;
colStyle[2].Width = 50;
colStyle[3].Width = 80;
} //To add the combo box dynamically to the data grid, you have to take the // Text Box that is present (by default) in the column where u want to add //this combo box (here it is first column i.e. Functional Area).From the //tablestyles of the data grid take the grid column styles of the column //where you want to add the combo box respectively.
DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];
//Add the combo box to the text box taken in the above step
dgtb.TextBox.Controls.Add (cmbFunctionArea);
//Note: After these add the code to fill the details in the grid by //establishing
// connection to the server and writing necessary steps:
}
}//end of the class
}//end of the namespace
有好有不好,我在整理中......
第一个错误
类声明应该为:
public class TestDataGrid : System.Windows.Forms.Form
第二个错误
掉了一个(
:)