文档库 最新最全的文档下载
当前位置:文档库 › 微软C#中DataGridView控件使用方法资料

微软C#中DataGridView控件使用方法资料

微软C#中DataGridView控件使用方法资料
微软C#中DataGridView控件使用方法资料

DataGridView动态添加新行:

DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法:

方法一:

int index=this.dataGridView1.Rows.Add();

this.dataGridView1.Rows[index].Cells[0].Value = "1";

this.dataGridView1.Rows[index].Cells[1].Value = "2";

this.dataGridView1.Rows[index].Cells[2].Value = "监听";

利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,该函数返回添加新行的索引号,即新行的行号,然后可以通过该索引号操作该行的各个单元格,如dataGridView1.Rows[index].Cells[0].Value = "1"。这是很常用也是很简单的方法。

方法二:

DataGridViewRow row = new DataGridViewRow();

DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = "aaa";

row.Cells.Add(textboxcell);

DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell(); row.Cells.Add(comboxcell);

dataGridView1.Rows.Add(row);

方法二比方法一要复杂一些,但是在一些特殊场合非常实用,例如,要在新行中的某些单元格添加下拉框、按钮之类的控件时,该方法很有帮助。DataGridViewRow row = new DataGridViewRow();是创建DataGridView的行对象,DataGridViewTextBoxCell 是单元格的内容是个TextBox,DataGridViewComboBoxCell是单元格的内容是下拉列表框,同理可知,DataGridViewButtonCell是单元格的内容是个按钮,等等。textboxcell是新创建的单元格的对象,可以为该对象添加其属性。然后通过

row.Cells.Add(textboxcell)为row对象添加textboxcell单元格。要添加其他的单元格,用同样的方法即可。最后通过dataGridView1.Rows.Add(row)为dataGridView1控件添加新的行row。

DataGridView取得或者修改当前单元格的内容:

当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null)

// 取得当前单元格内容

Console.WriteLine(DataGridView1.CurrentCell.Value);

// 取得当前单元格的列 Index

Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);

// 取得当前单元格的行 Index

Console.WriteLine(DataGridView1.CurrentCell.RowIndex);

另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的

行: DataGridView.CurrentCellAddress.Y

列:DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。

当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过CurrentCell 来设定DataGridView 的激活单元格。将 CurrentCell 设为

Nothing(null) 可以取消激活的单元格。

// 设定 (0, 0) 为当前单元格

DataGridView1.CurrentCell = DataGridView1[0, 0];

在整行选中模式开启时,你也可以通过 CurrentCell 来设定选定行。

/// 向下遍历

private void button4_Click(object sender, EventArgs e)

...{

int row = this.dataGridView1.CurrentRow.Index + 1;

if (row > this.dataGridView1.RowCount - 1)

row = 0;

this.dataGridView1.CurrentCell = this.dataGridView1[0, row];

}

/// 向上遍历

private void button5_Click(object sender, EventArgs e)

...{

int row = this.dataGridView1.CurrentRow.Index - 1;

if (row < 0)

row = this.dataGridView1.RowCount - 1;

this.dataGridView1.CurrentCell = this.dataGridView1[0, row];

}

* 注意: this.dataGridView 的索引器的参数是: columnIndex, rowIndex 或是columnName, rowIndex

这与习惯不同。

DataGridView设定单元格只读:

1)使用 ReadOnly 属性

如果希望,DataGridView 内所有单元格都不可编辑,那么只要:

// 设置 DataGridView1 为只读

DataGridView1.ReadOnly = true;此时,用户的新增行操作和删除行操作也被屏蔽了。

如果希望,DataGridView 内某个单元格不可编辑,那么只要:

// 设置 DataGridView1 的第2列整列单元格为只读

DataGridView1.Columns[1].ReadOnly = true;

// 设置 DataGridView1 的第3行整行单元格为只读

DataGridView1.Rows[2].ReadOnly = true;

// 设置 DataGridView1 的[0,0]单元格为只读

DataGridView1[0, 0].ReadOnly = true;

2)使用 EditMode 属性

DataGridView.EditMode 属性被设置为

DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;

3)根据条件设定单元格的不可编辑状态

当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。

// CellBeginEdit 事件处理方法

private void DataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

DataGridView dgv = (DataGridView)sender;

//是否可以进行编辑的条件检查

if (dgv.Columns[e.ColumnIndex].Name == "Column1" && !(bool)dgv["Column2", e.RowIndex].Value)

{

// 取消编辑

e.Cancel = true;

}

}

DataGridView不显示最下面的新行:

通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。

// 设置用户不能手动给 DataGridView1 添加新行

DataGridView1.AllowUserToAddRows = false;

但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。

补足:如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置DataView.AllowAdd

属性为 False 来达到同样的效果。

DataGridView判断新增行:

DataGridView 的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。

使用 DataGridViewRow.IsNewRow 属性可以判断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号.

在没有新行的时候,NewRowIndex = -1。

DataGridView行的用户删除操作的自定义:

1)无条件的限制行删除操作。

默认时,DataGridView 是允许用户进行行的删除操作的。如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时,用户的行删除操作就被禁止了。

// 禁止DataGridView1的行删除操作。

DataGridView1.AllowUserToDeleteRows = false;

但是,通过 DataGridViewRowCollection.Remove 还是可以进行行的删除。

补足:如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制行的删除。

2)行删除时的条件判断处理。

用户在删除行的时候,将会引发 https://www.wendangku.net/doc/2716300653.html,erDeletingRow 事件。在这个事件里,可以判断条件并取消删除操作。

// DataGridView1 的 UserDeletingRow 事件

private void DataGridView1_UserDeletingRow( object sender, DataGridViewRowCancelEventArgs e)

{

// 删除前的用户确认。

if (MessageBox.Show("确认要删除该行数据吗?", "删除确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) {

// 如果不是 OK,则取消。

e.Cancel = true;

}

}

DataGridView行、列的隐藏和删除:

1)行、列的隐藏

// DataGridView1的第一列隐藏

DataGridView1.Columns[0].Visible = false;

// DataGridView1的第一行隐藏

DataGridView1.Rows[0].Visible = false;

2)行头、列头的隐藏

// 列头隐藏

DataGridView1.ColumnHeadersVisible = false;

// 行头隐藏

DataGridView1.RowHeadersVisible = false;

3)行和列的删除

' 删除名为"Column1"的列

DataGridView1.Columns.Remove("Column1");

' 删除第一列

DataGridView1.Columns.RemoveAt(0);

' 删除第一行

DataGridView1.Rows.RemoveAt(0);

4)删除选中行

foreach (DataGridViewRow r in DataGridView1.SelectedRows) {

if (!r.IsNewRow)

{

DataGridView1.Rows.Remove(r);

}

}

DataGridView禁止列或者行的Resize:

1)禁止所有的列或者行的Resize

// 禁止用户改变DataGridView1的所有列的列宽

DataGridView1.AllowUserToResizeColumns = false;

//禁止用户改变DataGridView1の所有行的行高

DataGridView1.AllowUserToResizeRows = false;

但是可以通过 DataGridViewColumn.Width 或者 DataGridViewRow.Height 属性设定列宽和行高。

2)禁止指定行或者列的Resize

// 禁止用户改变DataGridView1的第一列的列宽

DataGridView1.Columns[0].Resizable = DataGridViewTriState.False;

// 禁止用户改变DataGridView1的第一列的行宽

DataGridView1.Rows[0].Resizable = DataGridViewTriState.False;

关于 NoSet :

当 Resizable 属性设为 DataGridViewTriState.NotSet 时,实际上会默认以DataGridView 的 AllowUserToResizeColumns 和 AllowUserToResizeRows 的属性值进行设定。

比如: DataGridView.AllowUserToResizeColumns = False 且 Resizable 是 NoSet 设定时,Resizable = False 。

判断 Resizable 是否是继承设定了 DataGridView 的 AllowUserToResizeColumns 和 AllowUserToResizeRows 的属性值,

可以根据 State 属性判断。如果 State 属性含有 ResizableSet,那么说明没有继承设定。

3)列宽和行高的最小值的设定

// 第一列的最小列宽设定为 100

DataGridView1.Columns[0].MinimumWidth = 100;

// 第一行的最小行高设定为 50

DataGridView1.Rows[0].MinimumHeight = 50;

4) 禁止用户改变行头的宽度以及列头的高度

// 禁止用户改变列头的高度

DataGridView1.ColumnHeadersHeightSizeMode =

DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

// 设置用户改变行头的宽度

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;

DataGridView列宽和行高自动调整的设定:

1) 设定行高和列宽自动调整

// 设定包括Header和所有单元格的列宽自动调整

DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

// 设定包括Header和所有单元格的行高自动调整

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; AutoSizeColumnsMode 属性的设定值枚举请参照 msdn 的DataGridViewAutoSizeRowsMode 说明。

2)指定列或行自动调整

// 第一列自动调整

DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;

AutoSizeMode 设定为 NotSet 时,默认继承的是

DataGridView.AutoSizeColumnsMode 属性。

3) 设定列头的高度和行头的宽度自动调整

// 设定列头的宽度可以自由调整

DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;

// 设定行头的宽度可以自由调整

DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;

4)随时自动调整

a,临时的,让列宽自动调整,这和指定AutoSizeColumnsMode属性一样。

// 让 DataGridView1 的所有列宽自动调整一下。

DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

// 让 DataGridView1 的第一列的列宽自动调整一下。

DataGridView1.AutoResizeColumn(0,

DataGridViewAutoSizeColumnMode.AllCells);上面调用的 AutoResizeColumns 和AutoResizeColumn

当指定的是DataGridViewAutoSizeColumnMode.AllCells 的时候,参数可以省略。即:DataGridView1.AutoResizeColumn(0) 和 DataGridView1.AutoResizeColumns()

b,临时的,让行高自动调整

// 让 DataGridView1 的所有行高自动调整一下。

DataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);

//让 DataGridView1 的第一行的行高自动调整一下。

DataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells);上面调用的 AutoResizeRows 和 AutoResizeRow

当指定的是DataGridViewAutoSizeRowMode.AllCells 的时候,参数可以省略。即:DataGridView1.AutoResizeRow (0) 和 DataGridView1.AutoResizeRows()

c,临时的,让行头和列头自动调整

// 列头高度自动调整

DataGridView1.AutoResizeColumnHeadersHeight();

// 行头宽度自动调整

DataGridView1.AutoResizeRowHeadersWidth( DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);

关于性能:

通过 AutoSizeColumnsMode 或者 AutoSizeRowsMode 属性所指定的单元格进行自动调整时,如果调整次数过于多那么将可能导致性能下降,

尤其是在行和列数比较多的情况下。在这时用 DisplayedCells 代替 AllCells 能减少非所见的单元格的调整,从而提高性能。

DataGridView冻结列或行:

1)列冻结

DataGridViewColumn.Frozen 属性为 True 时,该列左侧的所有列被固定,横向滚动时固定列不随滚动条滚动而左右移动。这对于重要列固定显示很有用。

// DataGridView1的左侧2列固定

DataGridView1.Columns[1].Frozen = true;

但是,DataGridView.AllowUserToOrderColumns = True 时,固定列不能移动到非固定列,反之亦然。

2)行冻结

DataGridViewRow.Frozen 属性为 True 时,该行上面的所有行被固定,纵向滚动时固定行不随滚动条滚动而上下移动。

// DataGridView1 的上3行固定

DataGridView1.Rows[2].Frozen = true;

DataGridView列顺序的调整:

设定 DataGridView 的 AllowUserToOrderColumns 为 True 的时候,用户可以自由调整列的顺序。

当用户改变列的顺序的时候,其本身的 Index 不会改变,但是 DisplayIndex 改变了。你也可以通过程序改变 DisplayIndex 来改变列的顺序。列顺序发生改变时会引发ColumnDisplayIndexChanged 事件:

// DataGridView1的ColumnDisplayIndexChanged事件处理方法

private void DataGridView1_ColumnDisplayIndexChanged(object sender, DataGridViewColumnEventArgs e)

{

Console.WriteLine("{0} 的位置改变到 {1} ",

https://www.wendangku.net/doc/2716300653.html,, e.Column.DisplayIndex);

}

行头列头的单元格:

// 改变DataGridView1的第一列列头内容

DataGridView1.Columns[0].HeaderCell.Value = "第一列";

// 改变DataGridView1的第一行行头内容

DataGridView1.Rows[0].HeaderCell.Value = "第一行";

// 改变DataGridView1的左上头部单元内容

DataGridView1.TopLeftHeaderCell.Value = "左上";

另外你也可以通过 HeaderText 来改变他们的内容。

[C#]

// 改变DataGridView1的第一列列头内容

DataGridView1.Columns[0].HeaderText = "第一列";

DataGridView单元格的ToolTip的设置:

DataGridView.ShowCellToolTips = True 的情况下,单元格的 ToolTip 可以表示出来。对于单元格窄小,无法完全显示的单元格, ToolTip 可以显示必要的信息。

1)设定单元格的ToolTip内容

[C#]

// 设定单元格的ToolTip内容

DataGridView1[0, 0].ToolTipText = "该单元格的内容不能修改";

// 设定列头的单元格的ToolTip内容

DataGridView1.Columns[0].ToolTipText = "该列只能输入数字";

// 设定行头的单元格的ToolTip内容

DataGridView1.Rows[0].HeaderCell.ToolTipText = "该行单元格内容不能修改";

2) CellToolTipTextNeeded 事件

在批量的单元格的 ToolTip 设定的时候,一个一个指定那么设定的效率比较低,这时候可以利用 CellToolTipTextNeeded 事件。当单元格的 ToolTipText 变化的时候也会引发该事件。但是,当DataGridView的DataSource被指定且VirualMode=True 的时候,该事件不会被引发。

[C#]

// CellToolTipTextNeeded事件处理方法

private void DataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)

{

e.ToolTipText = e.ColumnIndex.ToString() + ", " + e.RowIndex.ToString(); }

DataGridView的右键菜单(ContextMenuStrip):

DataGridView, DataGridViewColumn, DataGridViewRow, DataGridViewCell 有

ContextMenuStrip 属性。可以通过设定 ContextMenuStrip 对象来控制DataGridView 的右键菜单的显示。 DataGridViewColumn 的 ContextMenuStrip 属性设定了除了列头以外的单元格的右键菜单。 DataGridViewRow 的 ContextMenuStrip 属性设定了除了行头以外的单元格的右键菜单。DataGridViewCell 的ContextMenuStrip 属性设定了指定单元格的右键菜单。

// DataGridView 的 ContextMenuStrip 设定

DataGridView1.ContextMenuStrip = this.ContextMenuStrip1;

// 列的 ContextMenuStrip 设定

DataGridView1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;

// 列头的 ContextMenuStrip 设定

DataGridView1.Columns[0].HeaderCell.ContextMenuStrip =

this.ContextMenuStrip2;

// 行的 ContextMenuStrip 设定

DataGridView1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;

// 单元格的 ContextMenuStrip 设定

DataGridView1[0, 0].ContextMenuStrip = this.ContextMenuStrip4;

对于单元格上的右键菜单的设定,优先顺序是:Cell > Row > Column > DataGridView ? CellContextMenuStripNeeded、RowContextMenuStripNeeded 事件

利用CellContextMenuStripNeeded 事件可以设定单元格的右键菜单,尤其但需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。但是,在DataGridView使用了DataSource绑定而且是VirtualMode的时候,该事件将不被引发。

// CellContextMenuStripNeeded事件处理方法

private void DataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)

{

DataGridView dgv = (DataGridView)sender;

if (e.RowIndex < 0)

{

// 列头的ContextMenuStrip设定

e.ContextMenuStrip = this.ContextMenuStrip1;

}

else if (e.ColumnIndex < 0)

{

// 行头的ContextMenuStrip设定

e.ContextMenuStrip = this.ContextMenuStrip2;

}

else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)

{

// 如果单元格值是整数时

e.ContextMenuStrip = this.ContextMenuStrip3;

}

}

同样,可以通过RowContextMenuStripNeeded 事件来设定行的右键菜单。

// RowContextMenuStripNeeded事件处理方法

private void DataGridView1_RowContextMenuStripNeeded(object sender, DataGridViewRowContextMenuStripNeededEventArgs e)

{

DataGridView dgv = (DataGridView)sender;

// 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip

object boolVal = dgv["Column1", e.RowIndex].Value;

Console.WriteLine(boolVal);

if (boolVal is bool && (bool)boolVal)

{

e.ContextMenuStrip = this.ContextMenuStrip1;

}

}

CellContextMenuStripNeeded 事件处理方法的参数中、「e.ColumnIndex=-1」表示行头、「e.RowIndex=-1」表示列头。RowContextMenuStripNeeded则不存在

「e.RowIndex=-1」的情况。

DataGridView的单元格的边框、网格线样式的设定:

1) DataGridView 的边框线样式的设定

DataGridView 的边框线的样式是通过 DataGridView.BorderStyle 属性来设定的。BorderStyle 属性设定值是一个

BorderStyle 枚举: FixedSingle(单线,默认)、Fixed3D、None。

2) 单元格的边框线样式的设定

单元格的边框线的样式是通过 DataGridView.CellBorderStyle 属性来设定的。CellBorderStyle 属性设定值是

DataGridViewCellBorderStyle 枚举。(详细参见 MSDN)

另外,通过 DataGridView.ColumnHeadersBorderStyle 和 RowHeadersBorderStyle 属性可以修改 DataGridView 的头部的单元格边框线样式。属性设定值是DataGridViewHeaderBorderStyle 枚举。(详细参见 MSDN)

3)单元格的边框颜色的设定

单元格的边框线的颜色可以通过 DataGridView.GridColor 属性来设定的。默认是ControlDarkDark 。但是只有在 CellBorderStyle 被设定为 Single、SingleHorizontal、SingleVertical 的条件下才能改变其边框线的颜色。同样,ColumnHeadersBorderStyle 以及 RowHeadersBorderStyle 只有在被设定为 Single

时,才能改变颜色。

4)单元格的上下左右的边框线式样的单独设定

CellBorderStyle只能设定单元格全部边框线的式样。要单独改变单元格某一边边框式样的话,需要用到DataGridView.AdvancedCellBorderStyle属性。如示例:[https://www.wendangku.net/doc/2716300653.html,]

' 单元格的上边和左边线设为二重线

' 单元格的下边和右边线设为单重线

DataGridView1.AdvancedCellBorderStyle.Top = _ DataGridViewAdvancedCellBorderStyle.InsetDouble

DataGridView1.AdvancedCellBorderStyle.Right = _ DataGridViewAdvancedCellBorderStyle.Inset

DataGridView1.AdvancedCellBorderStyle.Bottom = _ DataGridViewAdvancedCellBorderStyle.Inset

DataGridView1.AdvancedCellBorderStyle.Left = _ DataGridViewAdvancedCellBorderStyle.InsetDouble

同样,设定行头单元格的属性是: AdvancedRowHeadersBorderStyle,设定列头单元格属性是:AdvancedColumnHeadersBorderStyle。

DataGridView单元格表示值的自定义:

通过CellFormatting事件,可以自定义单元格的表示值。(比如:值为Error的时候,单元格被设定为红色)

下面的示例:将“Colmn1”列的值改为大写。

//CellFormatting 事件处理方法

private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

{

DataGridView dgv = (DataGridView)sender;

// 如果单元格是“Column1”列的单元格

if (dgv.Columns[e.ColumnIndex].Name == "Column1" && e.Value is string) {

// 将单元格值改为大写

string str = e.Value.ToString();

e.Value = str.ToUpper();

// 应用该Format,Format完毕。

e.FormattingApplied = true;

}

}

CellFormatting事件的DataGridViewCellFormattingEventArgs对象的Value属性一开始保存着未被格式化的值。当Value属性被设定表示用的文本之后,把

FormattingApplied属性做为True,告知DataGridView文本已经格式化完毕。如果不这样做的话,DataGridView会根据已经设定的Format,NullValue,DataSourceNullValue,FormatProvider属性会将Value属性会被重新格式化一遍。

DataGridView用户输入时,单元格输入值的设定:

通过 DataGridView.CellParsing 事件可以设定用户输入的值。下面的示例:当输入英文文本内容的时候,立即被改变为大写。

//CellParsing 事件处理方法

private void DataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)

{

DataGridView dgv = (DataGridView)sender;

//单元格列为“Column1”时

if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&

e.DesiredType == typeof(string))

{

//将单元格值设为大写

e.Value = e.Value.ToString().ToUpper();

//解析完毕

e.ParsingApplied = true;

}

}

DataGridView新加行的默认值的设定:

需要指定新加行的默认值的时候,可以在DataGridView.DefaultValuesNeeded事件里处理。在该事件中处理除了可以设定默认值以外,还可以指定某些特定的单元格的ReadOnly属性等。

// DefaultValuesNeeded 事件处理方法

private void DataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)

{

// 设定单元格的默认值

e.Row.Cells["Column1"].Value = 0;

e.Row.Cells["Column2"].Value = "-";

}

DataGridView的中的查找、,添加、删除行:

/// 查找指定的字串单元格

bool bFound = false;

String strFound = toolStrip1_cbxFindString.Text;

int nRows = dataGridView1.Rows.Count - 1;

int nCols = dataGridView1.Columns.Count - 1;

for (int i = 0; i != nRows; i++)

{

for (int j = 0; j != nCols; j++)

{

if (strFound == dataGridView1.Rows[i].Cells[j].Value.ToString()) {

dataGridView1.CurrentCell = dataGridView1[j, i];

bFound = true;

break;

}

if (bFound)

{

break;

}

}

if (bFound)

{

break;

}

}

if (!bFound)

{

MessageBox.Show("没有找到字串:" + strFound);

}

///

/// 向DataGirdView中添加行,显示在第一行,并选中该行

///

/// DataGridView对向

/// 总列数

/// 要添加的每列的值

public void AddRow(DataGridView dv, int colcount,params string[] colvalues) {

DataGridViewRow dr = new DataGridViewRow();

dr.CreateCells(dv);

for (int i = 0; i < colcount; i++)

{

dr.Cells[i].Value = colvalues[i];

}

dv.Rows.Insert(0, dr);

dv.CurrentCell = dv.Rows[0].Cells[0];

}

///

/// 删除DV中的指定行

///

/// DataGridView对向

/// 要删除的指定行

public void ReMoveRow(DataGridView dv, int colindex)

{

dv.Rows.Remove(dv.Rows[colindex]);

dv.ClearSelection();

}

}

0、(最基本的技巧)、获取某列中的某行(某单元格)中的内容

this.currentposition = this.dataGridView1.BindingContext [this.dataGridView1.DataSource, this.dataGridView1.DataMember].Position;bookContent = this.database.dataSet.Tables[0].Rows [this.currentposition][21].ToString().Trim();MessageBox.Show(bookContent);

1

VB常用控件习题与解答

常用控件习题与解答 一、填空题 1.在图片框上放置的控件称为图片框的(子)对象,而窗体是图片框的(父)对象。 2.窗体的“名称”(Name)属性只能在(属性窗口中)设置。 3.在程序中设置窗体Form1的Caption属性为"主窗体",使用的赋值语句是(Form1.Caption="主窗体")。 4.当窗体的Enabled属性为(True)时,指定窗体响应事件。 5.窗体的Unload事件是在QueryUnload事件发生之(后)发生。 6.程序中,把当前窗体移动到屏幕左上角使用的方法为(Move0,0)。 7.在窗体Form1中坐标为(1600,800)的位置上输出字符串“Visual Basic 6.0”使用的语句为(Form1.Currrentx=1600)、(Form1.Currenty=800)、和(Form1.Print "VisualBasic6.0")。 8.若使文本框有边框,需设置BorderStyle属性的值为(1)。 9.在程序运行期间,用户可以用文本框显示信息。文本框接收输入的内容的属性是 (Text)。 10.若使文本框内能够接受多行文本,则要设置Multiline属性的值为(True)。 11.要把图形文件“C:\sample\diannt.jpg”装载到图片框Picture1上,使用的语句为(Picturel.Picture=LoadPicture("C:\sample\diannt.jpg"))。 12.若使图片框自动调整大小以适应装入的图形,则要设置Autosize属性的值为(True)。 13.除了在程序使用LoadPicture函数装载图形外,还可以在设计阶段通过修改(Picture)属性装载图形。 14.若程序中要把一些文本内容输出到图片框PictureBox,应使用(Print)方法。 15.当单选按钮OpdonButton的Value属性为(False)时,表示该单选按钮处于未选中状态。 16.若使命令按钮Command1重新生效,则使用的赋值语句为(Command1.Enabled=True)。 17.若使命令按钮不能接收和响应任何事件,可以设置Visible属性的值为(False)。 18.只有控件对象的Enabled和Visible属性值都为(True)时,该控件对象才能接受焦点。 19.Tab顺序是由建立控件时的(先后顺序)确定的。 20.设置框架Frame上的文本内容需要使用(Caption)属性。 21.在框架上可以设置一组相关控件,这些控件作为框架的(子)控件,它们具有总体的激活/屏蔽特性。 22.若屏蔽框架上的控件对象,则需设置(Enabled)属性的值为False。 23.列表框ListBox中项目的序号从(0)开始,到(Listcount-1)结束。 24.要显示列表框List1中序号为3项目内容,语句为(PrintList1.List(3))。

微软C#中DataGridView控件使用方法

DataGridView动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Value = "1"; this.dataGridView1.Rows[index].Cells[1].Value = "2"; this.dataGridView1.Rows[index].Cells[2].Value = "监听"; 利用dataGridView1.Rows.Add()事件为DataGridView控件增加新的行,该函数返回添加新行的索引号,即新行的行号,然后可以通过该索引号操作该行的各个单元格,如dataGridView1.Rows[index].Cells[0].Value = "1"。这是很常用也是很简单的方法。 方法二: DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = "aaa"; row.Cells.Add(textboxcell); DataGridViewComboBoxCell comboxcell = new DataGridViewComboBoxCell(); row.Cells.Add(comboxcell); dataGridView1.Rows.Add(row);

mschart控件使用详解

一.数据源? 说到绘制图表,可能很多人的第一反应除了是图表呈现的方式外,更关心的便是数据如何添加,记得在很多年前,哪时要绘制一个数据曲线图,一直找不到好的呈现方式,后来使用了SVG的绘图模式,不过在添加数据的时候可谓吃尽了苦头,毕竟,SVG只是一种描述语言,要动态的实现一个图表的绘制,是非常困难的.对于微软的图表控件,数据添加是一件很简单的方式,它支持多种数据添加方式,如: ·可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据. ·可以在图表的设计界面中,在属性中绑定一个数据源. ·可以在后台代码中,动态添加数据. ·可以在后台代码中设置一个或多个数据源,直接绑定到图表中. 在此处,我只着重讲解一下第3,4两点.对于第3点,相对来说比较简单,在后台代码中,找到要添加代码的Series,通过它下面Points的Add、AddXY、AddY等方法,即可以实现数据的添加.例如: 1.doublet; 2.for(t=0;t<=*;t+=6) 3.{ 4.doublech1=(t); 5.doublech2=2);

6.["Channel1"].(t,ch1); 7.["Channel2"].(t,ch2); 8.} 复制代码 注:代码摘自微软的例子,上例中,Chart1为图表的名字,Channel1、Channel2分别表示两个Series数据序列) 二.绑定数据? 先来看看图表控件都支持什么类型的数据绑定,根据官方文档的说法,只要是实现了IEnumerable接口的数据类型,都可以绑定到图表控件中,例如: DataView,DataReader,DataSet,DataRow,DataColumn,Array,List,SqlCommand,OleD bCommand,SqlDataAdapter,及OleDbDataAdapter对象。 对于开发来说,最常用的还是DataView、DataReader、DataSet、DataRow、Array、List 这几种类型了,有几点需要注意一下: ·图表控件支持多数据源的绑定,例如:X轴绑定一个数据集ds1,Y轴可以绑定另一个数据集ds2,当然也可以是X轴绑定到一个List数据对象,Y轴绑定到一个DataView对象等等。 ·图表控件的绑定方式一般有两种,常规绑定及交差表的绑定。 ·图表控件的Y轴数据,支持一次绑定多个值,以绘制时间、区域、使用量等之类的图形。 绑定数据的流程如下: 2008-11-1022:19:03

DataGridView的用法

在C# WinForm下做过项目的朋友都知道,其中的DataGridView控件默认只支持DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn、DataGridViewLinkColumn和DataGridViewTextBoxColumn六种列类型,如果你想要在DataGridView的列中添加其它的子控件,则需要自己实现DataGridViewColumn和DataGridViewCell,这就意味着你需要从现有的列中继承并改写一些方法,如实现一个支持单选按钮的列,或支持三种选择状态的多选按钮的列。 上面两个截图分别为RadioButton列和支持三种状态的CheckBox列在DataGridView中的实现效果,我是在Windows 2003中实现的,因此显示的效果跟在XP和Vista下有些区别,Vista下CheckBox的第三种状态(不确定状态)显示出来的效果是一个实心的蓝色方块。 下面我看具体来看看如何实现这两种效果。 要实现自定义的DataGridView列,你需要继承并改写两个类,一个是基于DataGridViewColumn的,一个是基于DataGridViewCell的,因为

RadionButton和CheckBox的实现原理类似,因此我们可以将这两种列采用同一种方法实现。创建DataGridViewDisableCheckBoxCell和DataGridViewDisableCheckBoxColumn两个类,分别继承自DataGridViewCheckBoxCell和DataGridViewCheckBoxColumn。代码如下: public class DataGridViewDisableCheckBoxCell: DataGridViewCheckBoxCell { public bool Enabled { get; set; } // Override the Clone method so that the Enabled property is copied. public override object Clone() { DataGridViewDisableCheckBoxCell cell = (DataGridViewDisableCheckBoxCell)base.Clone(); cell.Enabled = this.Enabled; return cell; } // By default, enable the CheckBox cell. public DataGridViewDisableCheckBoxCell() { this.Enabled = true; } // Three state checkbox column cell protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { // The checkBox cell is disabled, so paint the border, background, and disabled checkBox for the cell. if (!this.Enabled) { // Draw the cell background, if specified. if ((paintParts & DataGridViewPaintParts.Background) == DataGridViewPaintParts.Background) { SolidBrush cellBackground = new SolidBrush(cellStyle.BackColor); graphics.FillRectangle(cellBackground,

窗体中的常用控件 单选3分

窗体中的常用控件单选3分 1.在计算机控件中,每个表达式前都要加上("=") 2.用于显示更新数据库中的字段的控件类型是(绑定型) 3.关于控件的叙述,(选项组不能设置为表达式)的说法正确 4.(表)不是窗体控件 5.纵栏式窗体同一时刻能显示(一条记录) 6.无论是自动创建窗体还是报表,都必须选定要创建该窗体或报表基于的(报表) 7.没有数据来源的控件类型是(非绑定型) 8.关于控件的叙述,(在窗体设计视图窗口中的工具箱中只能看到部分控件)说法错误 9.能够接受数字型数据输入的窗体控件是(文本框) 10.在教师信息输入窗口中,为职称字段提供"教授""副教授""讲师"等选项供用户直接选择,应使用控件是(组合框) 11.要用文本框来显示当前日期,应设置文本框的控件来源属性是(=Data()) 12.窗口事件是指操作窗口时所引发的事件,(取消)不属于窗口事件 13.如果想再加入控件时,控件自动与网格对其,则应在加入控件前,执行"格式(对其网格)"命令 14.当窗体的内容比较多无法在一页中全部显示时,可以使用(选项卡)进行分页,若要进行页面切换,用户只需单击选项卡上的标签即可 15.(选项组)是用来显示一组有限选项集合的控件 16.在学生表中使用"照片"字段存放相片,当使用向导为该表创建窗体时,照片字段使用的默认控件是(绑定对象框) 17.为窗体上的控件设置Tab键的顺序,应选择属性对话框中的(数据选项卡) 18.使用窗体设计视图,不能创建(报表) 19.如果在窗体上输入的数据总是取自某一个表或查询中记录的数据,或者取自某固定内容的数据,可以使用(组合框或列表框)控件 20.(只要单击选项组中所需的值,就可以为字段选定数据值)的说法正确 21.(命令按钮)代表一个或一组操作 22.(可以向组合框中输入新值,而列表框不行) 23.创建窗体的数据源不能是(报表) 24.若要求在文本框中输入文本时达到密码"*"号的显示效果,则应设置的属性是("输入掩码"属性) 25.(窗体设计器)不是窗体的组成部分 26.关于控件的叙述,(在选项组中每次只能选择一个选项)的说法是正确的 27.

VB6.0中通过MSChart控件调用数据库

《VB6.0中通过MSChart控件调用数据库》 VB6.0中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,可显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。近日我为了在双击图表的某个区域时将与该区域相对应的数据库的内容在DataGrid控件上显示出来,遇到了许多困难,最后用一个自定义的变量SelectSeries解决了问题,具体方法如下:设数据库名称为“学生信息”,有一Access表“学生成绩”,其内容为一个班学生的考试成绩,包括学号、姓名、成绩3个字段,成绩字段格式是字符型,值为“优”、“良”、“中”、“差”中的一个。 窗体Form1包括一个MSChart控件McScore,类型为二维饼图,用于显示每种成绩的学生数;一个ADO控件AdScore用于连接数据库;一个DataGrid控件DgScore用于以表格形式显示数据库内容。 工作过程为:双击饼图的某个区域,则DgScore显示相应成绩的学生名单。 代码如下: Option Explicit Dim SelectedSeries as Integer ′自定义变量 Dim Rs() as String ′提取记录集用的字符串数组 Private Sub Form_Load() ′设定DataGrid控件的数据源 DgScore.DataSource=″AdScore″ ′设定ADO控件的连接字串和初始的记录源,即显示内容 AdScore.ConnectString=″Provider=Microsoft.OLEDB.3.51;Persist_Security Info=False;Data Source=学生信息″ AdScore.RecordSource=″selet *from学生成绩order by成绩″ AdScore.Refresh ′预设好提取记录用的SQL语句 Rs(1)=″select*from学生成绩where成绩=″+Chr(34)+″优″+_Chr(34)+″order by成绩″ Rs(2)=″select *from学生成绩where成绩=″+Chr(34)+″良″+_Chr(34)+″order by成绩″ Rs(3)=″select *from学生成绩where成绩=″+Chr(34)+″中″+_Chr(34)+″order by 成绩″ Rs(4)=″select *from学生成绩where成绩=″+Chr(34)+″差″_Chr(34)+″order by成绩″ End Sub Private Sub McScore_SeriesSelected(Series as Integer,MouseFlags as _Integer,Cancel as Integer) SelectedSeries=Series End Sub Private Sub McScore_PointSelected(Series as Integer,DataPoint as_Integer,MouseFlags as Integer,Cancel as Integer) SelectedSeries=Series End Sub Private Sub McScore_Db1Click()

c#_ms_chart_控件使用方法汇总(附统计图)

c# ms chart 控件使用方法 第一个简单的chart:创建曲线图 chart1.Series.Clear(); Series series = new Series("Spline"); series.ChartType = SeriesChartType.Spline; series.BorderWidth = 3; series.ShadowOffset = 2; // Populate new series with data series.Points.AddY(67); series.Points.AddY(57); series.Points.AddY(83); series.Points.AddY(23); series.Points.AddY(70); series.Points.AddY(60); series.Points.AddY(90); series.Points.AddY(20); // Add series into the chart's series collection chart1.Series.Add(series); 同时显示2条曲线 // Populate series with random data Random random = new Random(); for (int pointIndex = 0; pointIndex < 10;pointIndex++) { Chart1.Series["Series1"].Points.AddY(random.Next(45, 95)); Chart1.Series["Series2"].Points.AddY(random.Next(5, 75)); } // Set series chart type Chart1.Series["Series1"].ChartType = SeriesChartType.Line; Chart1.Series["Series2"].ChartType = SeriesChartType.Spline;

DataGridView控件用法合集

DataGridView控件用法合集 目录 DataGridView控件用法合集(一) 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一列新追加行非表示 4. DataGridView判断当前选中行是否为新追加的行 5. DataGridView删除行可否设定 6. DataGridView行列不表示和删除 DataGridView控件用法合集(二) 7. DataGridView行列宽度高度设置为不能编辑 8. DataGridView行高列幅自动调整 9. DataGridView指定行列冻结 10. DataGridView列顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、列、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字列设定 16. DataGridView选择的部分拷贝至剪贴板 17.DataGridView粘贴 18. DataGridView单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView控件用法合集(四) 19. DataGridView中的ContextMenuStrip属性 20. DataGridView指定滚动框位置 21. DataGridView手动追加列 22. DataGridView全体分界线样式设置 23. DataGridView根据单元格属性更改显示内容 24. DataGridView新追加行的行高样式设置る 25. DataGridView新追加行单元格默认值设置 DataGridView中输入错误数据的处理(五) 26. DataGridView单元格数据错误标签表示 27. DataGridView单元格内输入值正确性判断 28. DataGridView单元格输入错误值事件的捕获 DataGridView控件用法合集(六) 29. DataGridView行排序(点击列表头自动排序的设置) 30. DataGridView自动行排序(新追加值也会自动排序) 31. DataGridView自动行排序禁止情况下的排序 32. DataGridView指定列指定排序 DataGridView控件用法合集(七) 33. DataGridView单元格样式设置 34. DataGridView文字表示位置的设定 35. DataGridView单元格内文字列换行 36. DataGridView单元格DBNull值表示的设定 37. DataGridView单元格样式格式化 38. DataGridView指定单元格颜色设定

VS使用TeeChart绘图控件

VS2010 使用TeeChart绘图控件- 之一- 控件和类的导入vs2010的用法和vc6有很大的不同,特别是在一些函数调用那里,当然。控件导入也是很不一样的 安装好控件后就可以在工程里加入teechart控件了 加入方法有如下几种: 1.添加Teechart控件 1.1 插入Teechart控件 1.1.1 插入控件 新建一个对话框工程,在对话框上点击鼠标右键,弹出的菜单里选择“插入ActiveX控件” 然后弹出的对话框里选择TeeChart控件

这时对话框就有TeeChart控件了 1.1.2 vs2010另外一种插入控件的方法

vs2010对话框设置的工具栏上就有许多控件了,若想把我们常用的控件也加到工具栏上以后使用就很方便了,下面说的这种方法就是把控件加入工具栏里。方便以后的调用 在工具栏的空白处点击右键,选择添加选项卡 这时vs就会新建一个选项卡,自己可以定义一个名称,这里命名为绘图控件 为选项卡添加项:在新建的选项卡的空白处点击右键,选择“选择项” 由于控件比较多,会耗费一定的时间打开这个选择项,别以为死机了,耐心等个几十秒吧

在打开的对话框中选择选择com标签,选择teechart控件

这样teechart控件就会在你的工具栏新加的选项里了,以后都会存在(我添加TeeChat的同时还把其他的一些控件添加进去了) 1.1.3 控件属性设置 双击控件进行相关设置 这里添加一个快速线图-Fast Line 若数据量特别大,可以在Series标签里的Format的Draw all选项去掉

在Chart标签里还可以设置坐标轴的名称属性等,这里先不详细讲述属性的设置2.为控件添加类 vs2010与vc6不一样,vs2010的控件对应的类添加相对比vc6麻烦 这里就对刚刚加入的TeeChart控件加入相关的类 2.1 添加TypeLib的mfc类 (1)选择vs菜单“项目”-“添加类”(注意这时类视图树形控件选中最顶端的父节点) (2)添加TypeLib的mfc类

C#中DatagridView单元格动态绑定控件

C#中DatagridView单元格动态绑定控件 C#中DatagridView单元格动态绑定控件 我们在使用DatagridView的列样式的时候很方便,可以设置成comboboxcolumn,textboxcolumn等等样式,使用起来非常方便,但是,这样设置的列都采用同一种样式.对同一列采用多种样式的,就需要单独对单元格进行操作了. 具体方法如下: 1.实例化一个定义好的控件:如combobox 2.初始化combobox 控件3.获取private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (dataGridView1.CurrentCell.ReadOnly == false && dataGridView1.CurrentCell.RowIndex == 2) // combobox显示条件 { comboBox1.Text = dataGridView1.CurrentCell.Value.ToString(); //对combobox 赋值R = dataGridView1.GetCellDisplayRectangle(dataGridView1.Curre ntCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, false); //获取单元格位置

comboBox1.SetBounds(R.X + dataGridView1.Location.X, R.Y + dataGridView1.Location.Y, R.Width, R.Height); //重新定位combobox.中间有坐标位置的转换 comboBox1.Visible = true; } else comboBox1.Visible = false; } 4.将combobox的值写回到单元格 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { dataGridView1.CurrentCell.Value = comboBox1.Text; }

MSChart控件教程

MSChart控件 这些内容是在学习过程中进行的整理,由于感到书籍资料或软件帮助中有时让人很不容易理解,特制作这个教程,以方便其他朋友学习,从新学习此控件的人的角度 来描述相应的属性,相信也能让跟我一样程度的人更容易理解,可能在学习的过程中 对某些属性与方法有理解不正确,请各位指正。 附录:

1、AllowDynamicRotation 返回目录 作用:返回或设置是否可旋转图表 注:需要图表的ChartType是3d类型才可以,当AllowDynamicRotation=True时,在图表中可按住ctrl+鼠标左键旋转图表。 示例: F列代码在窗体加载时将MSChartl设置为3d柱形图,并允许按住ctrl+鼠标左键旋转。(窗体上放一个MSChart控件) Private Sub Form_Load() With MSChart1 .chartType = VtChChartType3dBar '类型为3d柱形图,类形常数详见附录.AllowD yn amicRotati on = True '允许旋转 End With End Sub 口Forniil A ■

AllowDynamicRotation 值: 下列代码将以对话框的形式返回上面示例的 MsgBox MSChart1.AllowDy namicRotati on True

2、ChartData 返回目录 注:书中及软件帮助文档中说到数组需要变体型数值,是指如果要将数组第一个元素 作为标题,其他作为数据,那个这个数组既有字符又有数字,那么就需要一个变 体形。如果数组中并不包含标题(或是之后使用属性来赋于标题) ,那么数组是可以定义类形的,个人建议先给定数组类型,之后再使用属性来设置标题。 作用:设置:将一个数组的数据作表图表的显示数据 返回:将图表数据赋给一个数组 示例:将数组元素作为图表的显示数据 制作一个1行6列的的图表(数组的维代表图表的行,每维的元素代表列) Private Sub Form_Load() Dim 一维数组(1 To 6) '为了表示得更清楚,我们采取逐个赋值的方法 一维数组(1)= 1 一维数组(2) = 2 一维数组(3) = 3 一维数组(4) = 4 一维数组(5) = 5 一维数组(6) = 6 With MSChartl .chartType = VtChChartType2dBar '类型为3d 柱形图.ChartData = 一维数组() End With End Sub

实验二 常用控件的使用

实验二常用控件的使用 一、实验目的 (1)掌握常用控件的属性和事件,掌握常用控件的使用,掌握常用控件编程; (2)熟悉并创建Windows窗体应用程序的过程; (3)掌握基于常用控件:MenuStrip、ToolStrip、StatusStrip、Panel、TreeView及 Splitter等构建类似资源管理器的主界面; (4)掌握Timer、ListView、ComboBox、DatePicker等常用控件的属性及应用。 (5)掌握动态构建TreeView节点的方法。 二、实验环境 ?PC机,Windows XP(2000)操作系统及以上; ?Visual Studio 2010(或2008)。 三、实验要求 (1)要求创建类似登录界面,并将登录时输入的信息:用户名传递给主窗体; (2)要求主窗体设置为多文档窗体; (3)要求实现动态创建TreeView控件; (4)实现TreeView节点、MenuStrip、ToolStrip单击事件; (5)实现在StatusStrip上显示登录的用户名、系统当前的日期、实时的时间。 四、实验内容 1、创建基于Windows窗体的应用程序项目; 2、创建登录窗体: (1)用户名和密码输入信息; (2)登录、退出等按钮; (3)实现按钮的单击事件; 3、主窗体的创建 (1)主窗体中要求实现:菜单、工具栏、功能树、状态栏; (2)功能树的创建要求动态创建,建议采用递归算法方式实现,建议树节点 参考信息如下:

(3)主窗体布局参考资源管理的方式实现,具体的布局方式参考下图。 4、数据的模拟 (1)功能树部分的数据可采用二维数组方式; (2)菜单至少建立2个以上菜单项; (3)工具栏至少建立两个以上工具栏项目; 5、部分参考代码: (1) 将字符串类型的窗体名称转换成Form类型 (2) 在主界面显示单文档窗体的参考代码 其中:this代表MDI窗体; GetForm为在(1)中定义的函数。

mschart控件使用详解

一.数据源 说到绘制图表,可能很多人的第一反应除了是图表呈现的方式外,更关心的便是数据如何添加,记得在很多年前,哪时要绘制一个数据曲线图,一直找不到好的呈现方式,后来使用了SVG的绘图模式,不过在添加数据的时候可谓吃尽了苦头,毕竟,SVG只是一种描述语言,要动态的实现一个图表的绘制,是非常困难的.对于微软的图表控件,数据添加是一件很简单的方式,它支持多种数据添加方式,如: ·可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据. ·可以在图表的设计界面中,在属性中绑定一个数据源. ·可以在后台代码中,动态添加数据. ·可以在后台代码中设置一个或多个数据源,直接绑定到图表中. 在此处,我只着重讲解一下第3,4两点.对于第3点,相对来说比较简单,在后台代码中,找到要添加代码的Series,通过它下面Points的Add、AddXY、AddY等方法,即可以实现数据的添加.例如: 1. double t; 2. for(t = 0; t <= (2.5 * Math.PI); t += Math.PI/6) 3. { 4. double ch1 = Math.Sin(t); 5. double ch2 = Math.Sin(t-Math.PI/2); 6. Chart1.Series["Channel 1"].Points.AddXY(t, ch1);

7. Chart1.Series["Channel 2"].Points.AddXY(t, ch2); 8. } 复制代码 注:代码摘自微软的例子,上例中,Chart1为图表的名字,Channel 1、Channel 2分别表示两个Series数据序列) 二.绑定数据 先来看看图表控件都支持什么类型的数据绑定,根据官方文档的说法,只要是实现了IEnumerable接口的数据类型,都可以绑定到图表控件中,例如:DataView, DataReader, DataSet, DataRow, DataColumn, Array, List, SqlCommand, OleDbCommand, SqlDataAdapter, 及OleDbDataAdapter对象。 对于开发来说,最常用的还是DataView、DataReader、DataSet、DataRow、Array、List这几种类型了,有几点需要注意一下: ·图表控件支持多数据源的绑定,例如:X轴绑定一个数据集ds1,Y轴可以绑定另一个数据集ds2,当然也可以是X轴绑定到一个List数据对象,Y轴绑定到一个DataView对象等等。 ·图表控件的绑定方式一般有两种,常规绑定及交差表的绑定。 ·图表控件的Y轴数据,支持一次绑定多个值,以绘制时间、区域、使用量等之类的图形。 绑定数据的流程如下: 2008111015142478.png (44.03 K) 2008-11-10 22:19:03

vb常用控件习题(含问题详解)

1.下列控件中没有Caption属性的是________。 A)框架B)列表框C)复选框D)单选按钮 2.复选框的Value 属性为1 时,表示________。 A)复选框未被选中B)复选框被选中 C)复选框有灰色的勾D)复选框操作有误 3.用来设置斜体字的属性是________。 A)FontItalic B)FontBold C)FontName D)FontSize 4.将数据项“China”添加到列表框List1中成为第二项应使用________语句。 A)List1.AddItem “China”,1 B)List1.AddItem “China ”, 2 C)List1.AddItem 1,“China”D)List1.AddItem 2,“China ” 5.引用列表框List1最后一个数据项,应使用________语句。 A)List1.List(List1.ListCount)B)List1.List(ListCount) C)List1.List(List1.ListCount-1)D)List1.List(ListCount-1) 6.假如列表框List1有四个数据项,那么把数据项“China”添加到列表框的最后,应使用________语句。 A)List1.AddItem 3,“China ” B)List1.AddItem “China ”, List1.ListCount-1 C)List1.AddItem “China ”, 3 D)List1.AddItem “China”,List1.ListCount 7.执行了下面的程序后,列表框中的数据项有________。 Private Sub Form_Click() For i = 1 to 6 List1.AddItem i Next i For i = 1 to 3 List1.RemoveItem i Next i End Sub A)1,5,6 B)2,4,6 C )4,5,6 D)1,3,5 8.如果列表框List1中没有选定的项目,则执行 List1.RemoveItem List1.ListIndex 语句的结果是________。 A)移去第一项B)移去最后一项 C)移去最后加入列表中的一项D)以上都不对 9.如果列表框List1中只有一个项目被用户选定,则执行 Debug.Print List1.Selected(List1.ListIndex)语句的结果是________。 A)在Debug窗口输出被选定的项目的索引值 B)在Debug窗口输出True C)在窗体上输出被选定的项目的索引值 D)在窗体上输出True 10.在窗体上画一个名称为List1的列表框,一个名称为Label1的标签,列表框中显示若干城市的名称。但单击列表框中的某个城市名时,该城市名从列表框中消失,并在标签中显示出来。下列能正确实现上述操作的程序是______。 A)Private Sub List1_Click()

C# MSChart图表控件使用介绍

C# MSChart 图表控件使用介绍 (2011-08-23 13:05:11) 转载 ▼ 标签: c mschart 图表 chart 使用介绍 分类: MSChart 图表 1、安装MSChart 控件 VS2008在默认下是没有MSChart 控件,所以我们需要下载安装。 Chart For vs2008安装需要下载4个文件: (1)dotnetfx35setup.exe (2)MSChart_VisualStudioAddOn.exe (3)MSChartLP_chs.exe (4)MSChart.exe https://www.wendangku.net/doc/2716300653.html,/u/ish 然后分别安装,安装结束之后打开VS2008就可以在工具箱中看到Chart 图表控件: 2、添加MSChart 控件 为WinForm 窗体添加Chart 控件

3、设置MSChart控件的属性 设置MSChart控件属性方法两种:1、代码中设置属性;2、属性表设置属性 1、代码中设置属性 步骤1:添加引用 using System.Windows.Forms.DataVisualization.Charting; 步骤2:写入代码 namespace MSChart { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ////////////////////ChartArea1属性设置/////////////////////////// //设置网格的颜色 chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineColor = Color.LightGray; chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineColor = Color.LightGray; //设置坐标轴名称 chart1.ChartAreas["ChartArea1"].AxisX.Title = "随机数"; chart1.ChartAreas["ChartArea1"].AxisY.Title = "数值";

NET新手指南:轻松自定义DataGridView控件

.NET新手指南:轻松自定义DataGridView控件 .NET DataGridView是一个便于使用的数据绑定控件。本文为.NET新手介绍了如何使用.NET配置向导VB Express自定义DataGridView控件。只需非常简单的修改以及一两行代码,便可以轻松实现交替颜色行,自定义排序功能以及显示编辑行。这样一个既可以浏览数据又可以编辑数据的窗体非常实用。 本文的目标读者是.NET新手。首先讲述如何创建一个新连接,然后讲述如何自定义结果控件,使用Visual Basic Express(VB Express)配置向导,本文将描述如何填充DataGridView控件,然后按照以下步骤进行提高: 1、行的显示颜色交替,构成一个绿色条效果; 2、禁用掉DataGridView内置的单列排序功能; 3、执行这个窗体时显示编辑行。 开始 VB Express提供了许多方法检索和操作外部数据,例如,只需要运行VB Express的配置向导就可以建立一个到MS Access 示例数据库Northwind.mdb中Customers的连接: 1、启动VB Express,然后在标准工具栏上点击新建项目按钮,在弹出的对话框中选择Windows Form Application; 2、在名称控件处输入一个有意义的名字,点击确定按钮; 3、点击解决方案资源管理器右下角的数据源标签,如果没有看到这个标签,从“数据”菜单中选择显示数据源即可; 4、点击新建数据源按钮,启动新建数据源配置向导; 5、点击下一步,数据库选项保持默认设置; 6、在下一个面板中点击新建连接; 7、在弹出的新建连接对话框中,点击修改,从弹出的修改数据源对话框中选择Access数据库文件,然后点击确定按钮; 8、在新建连接对话框中点击浏览,找到Northwind.mdb的位置(在Office目录的Samples文件夹下),然后点击确定按钮; 9、点击测试连接,然后点击确定按钮清除确认消息; 10、如果连接工作正常,点击确定返回向导窗口,然后点击下一步继续;

用Chart控件绘制动态图表

用Chart控件绘制动态图表 ---- 进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量。ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用。本文仅以VC++为例说明Chart控件的使用。 ---- Chart控件指Mschart.ocx(5.0版)或Mschrt20.ocx(6.0 版),是Visual Studio自带的ActiveX控件之一,其属性、事件很多,功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等。 一安装和使用Chart控件 ----在用到Chart控件的项目中安装该控件:从Project->Add to Project ->Components And Controls->Registered Active Xcontrols,选择Chart控件,则ClassWizard会生成相应的C++类,其中类CMSChart是由CWnd派生来的,它是Chart 控件的主要类,其他的类全部是由COleDispatchDriver派生来,控制控件中的相应对象,完成各部分相关功能,如CvcAxis类是实现坐标轴相关功能的源代码。同时在项目的控件工具箱上会出现代表Chart控件的按钮,使用时把Chart控件按钮从工具箱拖到对话框中,调整大小即可。 ----Chart控件至少有45个属性、9个方法、49个事件,在这里就不一一列举了。 ---- 在设计中,我们可以在主要属性页里修改各属性的属性值:右击对话框窗口中的Chart控件,选择“Properties”菜单项,就会弹出主要属性页对话框,对其中各属性值进行设置。有些属性在主要属性页里没有列出,只能编程修改。另外要动态绘制图表,必须掌握对控件的编程控制。 ---- 首先在对话框类中定义控件变量,以便编程时操纵控件。如对话框类定义如下: class CAbcDlg : public CDialog{ public: CAbcDlg(CWnd*pParent = NULL); //{{AFX_DA TA(CAbcDlg) enum { IDD = IDD_ABC_DIALOG }; CMSChart m_Chart; //}}AFX_DA TA ...... }; ----ActiveX控件的属性和方法在控件内部对应唯一一个整数索引值,编程时可以通过索引来设置或获取控件的属性值,也可以通过调用控件的C++类(在这里就是CMSChart)的成员函数设置或获取控件的属性值及调用控件的方法。例如: ----在CMSChart类实现中有如下代码: CString CMSChart::GetData(){

相关文档
相关文档 最新文档