搜档网
当前位置:搜档网 › DataGridView控件介绍

DataGridView控件介绍

DataGridView控件介绍
DataGridView控件介绍

VB2005 DataGridView控件使用

新的DataGridView 是.NET 2.0 中的一个新控件,是针对.NET 1.x 中功能较差的标准DataGrid 控件而设计的。Matthew MacDonald 在本文中论述了许多改进,包括:DataGridView 支持大量自定义和细致的格式设置、灵活的大小调整和选择、更好的性能以及更丰富的事件模型。

.NET Framework 的前两个版本(.NET 1.0 和.NET 1.1)在数据绑定方面留下了明显的空白。尽管开发人员拥有一个灵活的可配置模型,可以将几乎所有的控件链接到几乎所有的数据源,但却没有一种有效的方法来显示完整的信息表。可以实现此目的的唯一工具就是DataGrid 控件,这种控件非常适合于处理简单的演示,但是不太适合实际代码。

填补这项空白是.NET 2.0 的主要目标之一,并且Microsoft 已经用全新的网格控件DataGridView 来实现此目标。DataGridView 有两个指导原则。首先,其目标是支持常见任务(如主控/详细列表、验证和数据格式设置),而不需要您编写许多代码。更重要的是,设计过程中始终考虑了扩展性,因此您可以集成所需的专用功能,而不必采用低级别的复杂编程。

本页内容

基本数据绑定

美化DataGridView

使用DataGridView 选择单元格

DataGridView 对象

DataGridView 样式

自定义单元格格式

按钮列

图像列

编辑DataGridView

处理错误

验证输入

使用列表列约束选择

小结

基本数据绑定

熟悉DataGridView 的最佳方法就是实际尝试一下,无需配置任何属性。就像DataGrid 一样,您可以使用DataSource 属性来绑定DataTable 对象(或从DataTable 派生的对象)。

Dim ds As DataSet = GetDataSet()

DataGridView1.DataSource = ds.Tables("Customers")

与DataGrid 不同的是,DataGridView 一次只能显示一个表。如果绑定整个DataSet,则不会显示任何数据,除非您使用要显示的表名设置了DataMember 属性。

DataGridView1.DataSource = ds

DataGridView1.DataMember = "Customers"

基本的DataGridView 显示遵循以下几项简单的规则:

? 为数据源中的每个字段创建一列。

? 使用字段名称创建列标题。列标题是固定的,这意味着用户在列表中向下移动时列标题不会滚动出视图。

? 支持Windows XP 视觉样式。您会注意到列标题具有新式的平面外观,并且当用户将鼠标移到其上时会突出显示。

DataGridView 还包括几个您可能不会立即注意到的默认行为:

? 允许就地编辑。用户可以在单元格中双击或按F2 来修改当前值。唯一的例外是将DataColumn.ReadOnly 设置为True 的字段(如当前示例中的OrderID 字段)。

? 支持自动排序。用户可以在列标题中单击一次或两次,基于该字段中的值按升序或降序对值进行排序。默认情况下,排序时会考虑数据类型并按字母或数字顺序进行排序。字母顺序区分大小写。

? 允许不同类型的选择。用户可以通过单击并拖动来突出显示一个单元格、多个单元格或多个行。单击DataGridView 左上角的方块可以选择整个表。

? 支持自动调整大小功能。用户可以在标题之间的列分隔符上双击,使左边的列自动按照单元格的内容展开或收缩。

返回页首

美化DataGridView

DataGridView 的默认外观仅仅比DataGrid 略有改进,但是使用几项快速调整功能,您可以将其显著改进。

其中的一个问题就是列无法自动展开以适合其包含的数据。您可以使用DataGridView.AutoSizeColumns() 方法以及DataGridViewAutoSizeColumnCriteria 枚举中的某个值来解决此问题。您可以选择根据标题文本、当前显示的行或表中的所有行的的宽度来调整列宽。

' 根据标题或此列的某一行中

' 最长一段文本的宽度调整

' 列宽。

DataGridView1.AutoSizeColumns( _

DataGridView AutoSizeColumnCriteria.HeaderAndRows)

请记住,此方法必须在绑定数据后调用,否则不会产生任何效果。你可能还需要在用户编辑

数据后使用它(可能在响应DataGridView.CellV alueChanged 等事件时)。

如果不增加列宽,则可以更改行高。默认情况下,列中的文本会跨越多行。如果您使用DataGridView.AutoSizeRows() 方法,则行会根据其中的内容调整高度。使用此方法前,您可能希望增加列宽,尤其是在字段包含大量文本时。例如,以下代码片段使“说明”列的列宽增加为原列宽的四倍,然后调整行高以容纳其内容。

DataGridView.Columns("Description").Width *= 4

DataGridView.AutoSizeRows( _

DataGridView AutoSizeRowsMode.HeaderAndColumnsAllRows)

图 1 比较了自动调整DataGridView 大小的各种方法。

另一个合理的更改是清理每一列中显示的标题文本。例如,标题“Order Date”比字段名称“OrderDate”看上去更为专业。这项更改很容易进行。您只需从DataGridView.Columns 集合中检索相应的DataGridViewColumn,并修改其HeaderText 属性:

DataGridView.Columns("OrderID").HeaderText = "Order ID"

返回页首

使用DataGridView 选择单元格

默认情况下,DataGridView 允许自由选择。用户可以突出显示单元格或单元格组,可以一次突出显示所有单元格(通过单击网格右上角的方块),还可以突出显示一行或多行(通过在行标题列中单击)。根据选择模式,用户甚至能够通过选择列标题来选择一列或多列。通过使用DataGridViewSelectionMode 枚举中的某个值来设置DataGridView.SelectionMode 属性,可以控制此行为,如下所述:

? CellSe lect:用户可以选择单元格,但不能选择整个行或标题。如果DataGridView.MultiSelect 为True,则用户可以选择多个单元格。

? FullColumnSelect:单击列标题只能选择整个列。如果DataGridView.MultiSelect 为True,则用户可以选择多个列。使用此模式时,单击列标题不会对网格进行排序。

? FullRowSelect:单击行标题只能选择整个行。如果DataGridView.MultiSelect 为True,则用户可以选择多个行。

? ColumnHeaderSelect:用户可以使用CellSelect 或FullColumnSelect 选择模式。使用此模式时,单击列标题不会对网格进行排序。

? RowHeaderSelect:用户可以使用CellSelect 或FullRowSelect 选择模式。这是默认的选择模式。

通过DataGridView,可以使用以下三个属性方便地检索选定的单元格:SelectedCells、SelectedRows 和SelectedColumns。无论使用的是哪种选择模式,SelectedCells 都始终返回DataGridViewCell 对象的集合。另一方面,如果使用行标题选择了整个行,则SelectedRows

只返回信息,而如果使用列标题选择了整个列,则SelectedColumns 也只返回信息。

例如,以下代码片段将检查选定的整个行。只要找到一行,它就会在消息框中显示CustomerID 列中的相应值:

For Each SelectedRow As DataGridV iewRow In _

DataGridView1.SelectedRows

MessageBox.Show( _

SelectedRow.Cells("CustomerID").V alue)

Next

使用CurrentCell 或CurrentCellAddress 属性检索对当前单元格的引用也同样简单。使用DataGridView 时,您会注意到当前单元格被一个矩形围住,看起来像是一个用黑色虚线绘制的方框。这就是用户当前所在的位置。

CurrentCellAddress 属性是只读的,但是您可以使用CurrentCell 以编程方式更改当前位置。完成此操作后,DataGridView 将被滚动以使当前位置可见。

' 移至第十一行的第四个单元格。

DataGridView.CurrentCell = _

DataGridView.Rows(10).Cells(3)

返回页首

DataGridView 对象

到目前为止,您已经了解了如何与当前选定的一组行、单元格和列进行交互。DataGridView 提供了两个关键集合,用于处理整个数据集。这两个集合分别是Columns (DataGridViewColumn 对象的集合)和Rows(DataGridViewRow 对象的集合,每个对象都引用一组DataGridViewCell 对象的集合)。图 2 显示了对象模型。

一般而言,您将使用DataGridViewColumn 对象来配置列显示属性、格式设置及标题文本,而使用DataGridViewRow 和DataGridViewCell 对象从绑定的记录中检索实际数据。在DataGridViewCell 中修改数据时,处理方式与用户编辑的方式相同:引发相应的DataGridView 更改事件,并且修改底层的DataTable。

现在您已经了解了DataGridView 对象模型,因此可以轻松地创建遍历该表的代码。要选择行、列或单元格,只需找到对应的DataGridViewRow、DataGridViewColumn 或DataGridViewCell 对象,并将IsSelected 属性设置为True。

以下示例以编程方式选择OrderID 字段的值小于100 的所有行:

For Each Row As DataGridViewRow In DataGridView1.Rows

If Row.Cells("OrderID").V alue < 100 Then

Row.Selected = True

End If

Next

值得一提的是,有几个从DataGridViewColumn 派生的不同的类。这些类可以控制在单元格

中显示和编辑值的方式。.NET 包括五个预先创建的DataGridView 列类:DataGridView ButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn 和DataGridViewTextBoxColumn。

返回页首

DataGridView 样式

设计DataGridView 时面临的挑战之一就是创建一个格式设置系统,该系统要能够足够灵活地应用不同级别的格式设置,而对于非常大的表又要保持高效。从灵活性角度来看,最好的方法是允许开发人员分别配置每个单元格。但是从效率角度来看,这种方法可能是有害的。包含数千行的表中具有好几万个单元格,维护每个单元格的不同格式肯定会浪费很多内存。

为解决此问题,DataGridView 通过DataGridViewCellStyle 对象来实现多层模型。DataGridViewCellStyle 对象表示单元格的样式,并且包括如颜色、字体、对齐、换行和数据格式等详细信息。您可以创建一个DataGridViewCellStyle 来指定整个表的默认格式。此外,还可以指定列、行和各个单元格的默认格式。格式设置的越细致、创建的DataGridViewCellStyle 对象越多,该解决方案的可伸缩性也就越小。但是,如果您主要使用基于列和基于行的格式设置,并且只是偶尔设置各个单元格的格式,则与DataGrid 相比,DataGridView 不需要太多内存。

DataGridView 应用格式设置时,将遵循以下优先顺序(从最高到最低):

1. DataGridViewCell.Style

2. DataGridViewRow.DefaultCellStyle

3. DataGridView.AlternatingRowsDefaultCellStyle

4. DataGridView.RowsDefaultCellStyle

5. DataGridViewColumn.DefaultCellStyle

6. DataGridView.DefaultCellStyle

重要的是要清楚:样式对象不是以“全有/全无”的方式应用的,DataGridView 会检查每个属性。例如,假设您的单元格使用DataGridViewCell.Style 属性来应用自定义字体,但没有设置自定义前景色。结果,该字体设置将覆盖任何其他样式对象中的字体信息,但如果层次结构中下一个样式对象的前景色不为空,则将从该对象继承前景色(在这种情况下为DataGridViewRow.DefaultCellStyle)。

DataGridViewCellStyle 定义了两种格式设置:数据和外观。数据格式设置描述显示数据绑定值之前如何对其进行修改。这种格式设置通常包括使用格式设置字符串将数字或日期值转换为文本。要使用数据格式设置,只需使用DataGridViewCellStyle.Format 属性设置格式定义或自定义格式字符串即可。

例如,以下代码片段对UnitCost 字段中的所有数字进行格式设置,以将它们显示为货币值,保留两位小数并加上在区域设置中定义的相应货币符号:

DataGridView1.Columns("UnitCost"). _

DefaultCellStyle.Format = "C"

外观格式设置包括颜色和格式等表面细节。例如,以下代码右对齐UnitCost 字段、应用粗体并将单元格的背景更改为黄色:

DataGridView1.Columns("UnitCost"). _

DefaultCellStyle.Font = _

New Font(DataGridView.Font, FontStyle.Bold)

DataGridView1.Columns("UnitCost"). _

DefaultCellStyle.Alignment = _

DataGridViewContentAlignment.MiddleRight

DataGridView1.Columns("UnitCost"). _

DefaultCellStyle.BackColor = Color.LightY ellow

其他与格式设置相关的属性包括ForeColor、SelectionForeColor、SelectionBackColor、WrapMode(控制文本在空间允许时是跨越多行还是直接截断)及NullV alue(将替代Null 值的值)。

DataGridView 还包括一个设计器,用于在设计时配置列样式。只需从“Properties”(属性)窗口中选择“DataGridView Properties”(DataGridView 属性)链接,或者从各种预先创建的样式设置中选择“AutoFormat”(自动套用格式)。

返回页首

自定义单元格格式

单元格格式设置的第一种方法是设置更高级别的DataGridView、DataGridViewColumn 和DataGridViewRow 属性。但是,有时您需要为特定单元格单独设置样式。例如,您可能需要在列中的数据大于或小于某个值时标记该列中的数据。例如,突出显示项目计划列表中已过去的到期日期,或者在销售分析中突出显示负收益率。在这两种情况下,您需要对单独的单元格进行格式设置。

了解DataGridView 对象模型后,您可能想要遍历特定列中的单元格集合,以寻找要突出显示的值。这种方法是可行的,但不是最好的方法。关键问题是如果用户编辑了数据,或者如果代码更改了绑定的数据源,不会对单元格的突出显示情况进行相应的更新。

幸运的是,DataGridView 针对此目的提供了CellFormatting 事件。CellFormatting 只在显示单元格值之前引发。通过该事件,可以基于单元格的内容来更新单元格样式。以下示例检查特定的客户并相应地标记单元格:

Private Sub DataGridView1_CellFormatting( _

ByV al sender As System.Object, _

ByV al e As System.Windows.Forms. _

DataGridViewCellFormattingEventArgs) _

Handles DataGridView1.CellFormatting

' 检查该列是否正确。

If DataGridView1.Columns(e.ColumnIndex).Name = _

"CustomerID" Then

' 检查该值是否正确。

If e.V alue = "ALFKI" Then

e.CellStyle.ForeColor = Color.Red

e.CellStyle.BackColor = Color.Y ellow

End If

End If

End Sub

样式不是影响网格外观的唯一细节。您还可以隐藏列、在不同位置之间移动列,并“冻结”列,使这些列在用户滚动到右端时仍然可见。这些功能都是通过DataGridViewColumn 类的属性提供的,如下所述:

? DisplayIndex:设置列在DataGridView 中显示的位置。例如,DisplayIndex 值为0 的列将自动显示在最左边的列中。如果多个列具有相同的DisplayIndex,则先显示最先出现在该集合中的列。因此,如果您使用DisplayIndex 将一列向左移动,则可能还需要设置最左边的列的DisplayIndex,以将其向右移动。最初,DisplayIndex 与DataGridView.Columns 集合中DataGridViewColumn 对象的索引相匹配。

? Frozen:如果为True,则该列将始终可见并且固定在表的左侧,即使用户为查看其他列而滚动到右侧亦如此。

? HeaderText:设置将在列标题中显示的文本。

? Resizable 和MinimumWidth:将Resizable 设置为False,以防止用户调整列宽;或者将MinimumWidth 设置为允许的最小像素数目。

? Visible:要隐藏列,请将此属性设置为False。

返回页首

按钮列

DataGridView 提供的一种列是DataGridView ButtonColumn,这种列在每一项旁边显示一个按钮。您可以响应此按钮的单击事件,并使用它启动其他操作或显示新的表单。

以下示例使用按钮文字“Details...”创建简单的按钮列:

' 创建按钮列。

Dim Details As New DataGridView ButtonColumn()

https://www.sodocs.net/doc/d517300587.html, = "Details"

' 关闭数据绑定并显示静态文本。

'(但是,您可以通过设置DataPropertyName

' 属性来使用该表中的属性。)

Details.DisplayTextAsFormattedV alue = False

Details.Text = "Details..."

' 清除标题。

Details.HeaderText = ""

' 添加该列。

DataGridView1.Columns.Insert( _

DataGridView1.Columns.Count, Details)

图 3 显示了包含新列的网格。以下代码会对任何行中的按钮单击事件做出反应,并显示相应的记录信息:

Private Sub DataGridView1_CellClick( _

ByV al sender As System.Object, _

ByV al e As System.Windows.Forms. _

DataGridViewCellEventArgs) _

Handles DataGridView1.CellClick

If DataGridView1.Columns(e.ColumnIndex).Name = _

"Details" Then

MessageBox.Show("Y ou picked " & _

DataGridView1.Rows(e.RowIndex). _

Cells("CustomerID").V alue)

End If

End Sub

比较现实的方案是,在此时创建并显示一个新窗口,并将有关选定记录的信息传递到这个新窗口,以便查询并显示完整的信息。

返回页首

图像列

DataGridView 提供的另一种列是DataGridViewImageColumn,这种列将在单元格边框内显示一个图片。您可以设置https://www.sodocs.net/doc/d517300587.html,yout 属性以便配置图片在单元格中的显示方式:是将单元格扩展到适当的大小,还是将直接剪裁太大的图像。

使用DataGridViewImageColumn 的方法有两种。首先,您可以采用与DataGridView ButtonColumn 相同的方式手动创建并添加该列。如果您需要显示DataSet 本身不提供的相关图像信息,则此列非常有用。例如,您可能需要获取文件名(如ProductPic002.gif),从网络驱动器读取相应的文件,然后在网格中显示该文件。为完成此操作,您需要对DataGridView 事件(如CellFormatting)做出反应,以便读取相应行的图片、获取图像数据并使用该列中的V alue 属性将其插入。

如果DataSet 包含不需要任何手动操作的二进制图片数据,那么事情会变得更加简单。例如SQL Server Pubs 数据库中的pub_info 表,该表包含公司徽标。绑定至此表时,您不需要执行任何额外步骤,DataGridView 将自动识别出您正在使用图像,并会创建所需的DataGridViewImageColumn。(有关这项技术的示例,请参阅本文的下载内容。)

返回页首

编辑DataGridView

众所周知,DataGrid 的用户输入功能很不灵活,您几乎没有办法自定义单元格验证方式及错误报告方式。而另一方面,DataGridView 允许您通过对在编辑过程的所有阶段中引发的大量不同事件做出反应来控制其行为。

默认情况下,当用户用鼠标双击单元格或按F2 键时,DataGridView 单元格将进入编辑模式。您还可以通过将DataGridView.EditCellOnEnter 属性设置为True,对DataGridView 进行配置,以便当用户移到该单元格后,该单元格立即切换到编辑模式。您还可以使用DataGridView 的BeginEdit()、CancelEdit()、CommitEdit() 和EndEdit() 方法通过编程方式开始和停止单元格编辑。用户编辑单元格时,行标题将显示一个铅笔状的编辑图标。

用户可以通过按Esc 键来取消编辑。如果将EditCellOnEnter 属性设置为True,则单元格仍将处于编辑模式,但是所有更改都将被放弃。要提交更改,用户只需移到新的单元格,或将焦点切换到其他控件。如果您的代码可以移动当前单元格的位置,则此代码也会提交更改。

为防止单元格被编辑,可以设置DataGridViewCell、DataGridViewColumn、DataGridViewRow 或DataGridView 的ReadOnly 属性(取决于您是要防止对该单元格进行更改、对该列中的所有单元格进行更改、对该行中的所有单元格进行更改,还是要防止对该表中的所有单元格进行更改)。DataGridView 还提供了CellBeginEdit 事件,用于取消尝试的编辑。

返回页首

处理错误

默认情况下,DataGridViewTextBoxColumn 允许用户输入任何字符,包括当前单元格中可能不允许使用的那些字符。例如,用户可以在数字字段中键入非数字字符,也可以指定与DataSet 中定义的ForeignKeyConstraint 或UniqueConstraint 冲突的值。DataGridView 采用不同的方式来处理这些问题:

? 如果可以将编辑的值转换为所需的数据类型(例如,用户在数字列中键入了文本),则用户将不能提交更改或导航到其他行。而必须取消更改或编辑值。

? 如果编辑的值与DataSet 中的约束冲突,则用户通过导航到其他行或按Enter 键提交更改后,更改将被立即取消。

这些处理方式适用于大多数情况。但是,如果需要,您也可以通过响应DataGridView.DataError 事件来参与错误处理,该事件是在DataGridView 侦听到来自数据源的错误时引发的。

返回页首

验证输入

验证是一项与错误处理稍有不同的任务。通过错误处理,您可以处理由DataSet 报告的问题。而通过验证,您可以捕获您自己定义的错误情况,例如DataSet 中允许的数据在应用程序中却没有意义。

当用户通过导航到新的单元格提交更改时,DataGridView 控件将引发CellV alidating 和CellV alidated 事件。这些事件之后是RowV alidating 和RowV alidated 事件。您可以响应这些事件,检查用户输入的值是否正确,并执行所需的任何后期处理。如果值无效,通常您会通过两种方式来做出响应,即取消更改和单元格导航(通过将EventArgs 对象的Cancel 属性设置为True),或者设置某种错误文本来提醒用户。可以将错误文本置于其他控件中,也可以使用相应的DataGridViewRow 和DataGridViewCell 的ErrorText 属性在DataGrid 中显示错误文本:

? 设置DataGridV iewCell.ErrorText 时,单元格中将显示感叹号图标。将鼠标悬停在此图标上将显示错误消息。

? 设置DataGridViewRow.ErrorText 时,行左侧的行标题中将显示感叹号图标。将鼠标悬停在此图标上将显示错误消息。

通常,您会结合使用这两种属性,并设置行和单元格中的错误消息。以下示例检查CompanyName 字段中太长的文本输入。如果发现有问题的值,则会将错误符号(红色的感叹号)添加到单元格中,并显示描述该问题的工具提示文本。

Private Sub DataGridView1_CellV alidating( _

ByV al sender As System.Object, _

ByV al e As System.Windows.Forms. _

DataGridViewCellV alidatingEventArgs) _

Handles DataGridView1.CellV alidating

If DataGridView1.Columns(e.ColumnIndex).Name = _

"CompanyName" Then

If CType(e.FormattedV alue, String).Length > _

50 Then

DataGridView1.Rows( _

e.RowIndex).Cells(e.ColumnIndex). _

ErrorText = _

"The company name is too long."

End If

End If

End Sub

返回页首

使用列表列约束选择

使用验证可以捕获任何错误情况。但是,这种方法不一定是最好的,因为它允许用户输入无效的内容,然后在事实出现后尝试改正无效输入。更好的解决方案是使用户在一开始就无法输入任何无效的内容。

一个常见例子就是您需要将列限制在预定义值列表的范围内。在此示例中,对于用户而言,

最简单的办法是从列表中选择正确的值,而不要手动键入值。最大的优势在于,您可以使用DataGridViewComboBoxColumn 非常方便地实现此设计。

可以使用Items 集合手动为DataGridViewComboBoxColumn 添加项列表,就像使用ListBox 一样。此外,还可以将DataGridViewComboBoxColumn 绑定到其他数据源。在这种情况下,您可以使用DataSource 属性来指定数据源,并使用DisplayMember 属性指示列中应显示的值,以及使用V alueMember 属性指定底层列值应使用的值。

为了演示这种情况,来看看下一个有关Products 表的示例。此表中的每一条记录都通过其CategoryID 字段链接至Categories 表中的记录。要更改产品类别,用户需要记住正确的ID,并将其输入到CategoryID 字段中。更好的解决方案是使用与Categories 表绑定的DataGridViewComboBoxColumn。此列将使用CategoryName 作为显示值,但是会将CategoryID 作为真正的底层值。此列仍将通过DataPropertyName 属性与Products 表绑定在一起,这意味着当用户从列表中选择新的Category 时,产品记录的CategoryID 字段将自动更改。

以下是配置此表所需的代码:

' 删除自动生成的CategoryID 列。

DataGridView1.Columns.Remove("CategoryID")

' 为CategoryID 创建列表列。

Dim List As New DataGridViewComboBoxColumn()

List.DisplayIndex = 0

List.HeaderText = "Category"

' 此列绑定至

' Products.CategoryID 字段。

List.DataPropertyName = "CategoryID"

' 该列表将从Categories 表获得数据。

List.DataSource = ds.Tables("Categories")

List.DisplayMember = "CategoryName"

List.V alueMember = "CategoryID"

' 添加该列。

DataGridView1.Columns.Add(List)

返回页首

小结

本文概要介绍了最值得期待的.NET 新控件之一:DataGridView。与DataGrid 不同的是,DataGridView 适用于各种不同的现实情况——无论是要处理数据绑定和用户编辑,还是仅涉及静态文本显示,都可以采用DataGridView。简而言之,本文让您近距离了解了.NET Framework 提供的一体化数据解决方案,以及Windows 窗体开发人员升级至.NET 2.0 的最引人注目的原因之一

3DWeb控件方法介绍

3DWeb控件方法介绍 1、String OpenLocalFile(String filePath); 功能:打开本地文件 参数:filePath:路径名称 返回:文件名(不带文件后缀) 2、String OpenRemoteHttpFile(String filePath,BOOL bOpen); 功能: 下载并打开Http网络文件 参数: filePath:完整的网络路径如https://www.sodocs.net/doc/d517300587.html,/3dweb/地表面.3dm bOpen:是否在控件中打开 返回: 下载到本地的路径 String OpenRemoteFtpFile(String url, String usrName, String usrPwd, BOOL bOpen) 功能: 下载并打开Ftp网络文件 参数: filePath:完整的网络路径如ftp://https://www.sodocs.net/doc/d517300587.html,/3dweb/地表面.3dm usrName:用户名,匿名则为空 usrPwd: 密码,匿名则为空 bOpen:是否在控件中打开 返回: 下载到本地的路径 3、void ClearScreen(); 功能:清除屏幕图元 4、void ClearTempMark(); 功能:清除临时标记 5、void DynamicRouteView(); 功能:动态路径浏览 6、void FitWorld(); 功能:聚焦到屏幕中心 7、void setTipStatus(BOOL bTip); 功能:设置气泡是否显示, 参数:bTip:是否显示 void setLayerBarVisible(BOOL bTip); 功能:设置图层是否显示 参数:bTip:是否显示 void setStatusBarVisible(BOOL bVis); 功能:设置状态栏可见性 参数: bVis:是否可见

.NET4.0 用户控件的概述

https://www.sodocs.net/doc/d517300587.html,4.0 用户控件的概述 用户控件是页面的一段,包含了静态HTML代码和服务器控件。其优点在于一旦创建了一个用户控件,可以在同一个应用的多个页面中重用。并且,用户可以在Web用户控件中,添加该控件的属性、事件和方法。 1.什么是用户控件 用户控件(后缀名为.ascx)文件与https://www.sodocs.net/doc/d517300587.html,网页窗体(后缀名为.aspx)文件相似。就像网页窗体一样,用户控件由用户接口部分和控制标记组成,而且可以使用嵌入脚本或者.cs代码后置文件。用户控件能够包含网页所能包含的任何东西,包括静态HTML内容和https://www.sodocs.net/doc/d517300587.html,控件,它们也作为页面对象(Page Object)接收同样的事件(如Load和PreRender),也能够通过属性(如Application,Session,Request 和Response)来展示https://www.sodocs.net/doc/d517300587.html,内建对象。 用户控件使程序员能够很容易地跨Web应用程序划分和重复使用公共UI功能。与窗体页相同,用户可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。 此外,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。与服务器端包含文件(SSI)相比,用户控件通过访问由https://www.sodocs.net/doc/d517300587.html,提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何https://www.sodocs.net/doc/d517300587.html,服务器控件一样。 此外,可以独立于包含用户控件的窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的https://www.sodocs.net/doc/d517300587.html,服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。 用户控件与普通网页页面的区别是: ●用户控件开始于控件指令而不是页面指令。 ●用户控件的文件后缀是.ascx,而不是.aspx。它的后置代码文件继承于 https://www.sodocs.net/doc/d517300587.html,erControl类.事实上,UserControl类和Page类都继承于同一个 TemplateControl类,所有它们能够共享很多相同的方法和事件。 ●没有@Page指令,而是包含@Control指令,该指令对配置及其他属性进行定义。 ●用户控件不能被客户端直接访问,不能作为独立文件运行,而必须像处理任何控件一 样,将它们添加到https://www.sodocs.net/doc/d517300587.html,页中。 ●用户控件没有html、body、form元素,但同样可以在用户控件上使用HTML元素和 Web控件。 用户可以将常用的内容或者控件以及控件的运行程序逻辑,设计为用户控件,

微软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);

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,

各种控件的详细使用介绍

各种控件的详细使用介绍:常用属性,常用事件,常用的方法 控件的分类(控件根据所属的基类,进行划分) 根据是否能容纳其他控件,可以分为: 容器类控件(包括:表单集,表单,表格,表格列,页框,页面,命令按钮组,选项按钮组,工具栏,容器控件) 非容器类控件(包括:标签,文本框,编辑框,命令按钮,复选框,列表框,组合框,微调框,形状,计时器,线条,图像) 另外一种划分方法,是根据控件和数据环境中数据源的关系进行划分,控件分为:绑定型控件是指内容可以和与数据环境后端的表、视图或查询中的字段和内存变量相关联的控件。在该控件中输入、修改或选择的值将保存在数据源中,而数据源中值的改变,也将改变控件的值。(复选框,文本框,编辑框,列表框,组合框,表格,选项按钮组,微调框,activex控件) 非绑定型控件是指其内容不与后端的表、视图和查询中的字段或内容相关联的控件。(命令按钮,命令按钮组,线条,标签,计时器,形状,图像) 一、标签控件(Label)——非容器类控件,非数据绑定控件 用以显示文本,显示提示信息。标签上的显示文本由caption属性指定。 其中的文本在表单运行时不能被用户直接修改。 常用属性: 常用事件:mousemove 鼠标移动事件mousedown 鼠标按下左键事件 Click 单击事件mouseup 释放鼠标左键事件

【范例】参考实验作业HomeWork7-1-1.scx。 二、文本框与编辑框——非容器类控件,数据绑定控件 文本框——用以显示或编辑表中的非备注型字段的数据。 编辑框——用途与文本框相似,用以显示或编辑长字段或备注型字段的数据。 两者均为数据绑定控件,非容器类控件 文本框的常用属性: ?ControlSource 指定与文本框绑定的数据源 ?Value 指定文本框的当前选定的值 例如:value=0 表示文本框中的数据设置为数值型,不能输入字母或汉字?PasswordChar 用设定的字符来显示用户输入的值,而实际输入保存在value属性中。 例如:PasswordChar=*或者其他的符号。文本框中显示为*或其他符号

ASP NET基础知识

https://www.sodocs.net/doc/d517300587.html,的两种编码方式是什么,什么是代码内嵌,什么是代码后置?Web页面的父类是谁? 代码内嵌和代码后置。代码内嵌把业务逻辑编码和显示逻辑编码交叉使用。代码后置式业务逻辑代码和显示逻辑代码分开使用。system.web.ui.page 2.Web控件的AutoPostBack属性的作用是什么? 控件的值改变后是否和服务器进行交互(自动回传) 3.验证服务器控件有哪些,他们有哪些常用的属性,ControlToValidate属性的作用是什么?有哪两种服务器控件? RequiredFieldValidator:controltovalidate(验证的控件ID,共有的属性),text,ErrorMessage||||(dropdownlist控件验证时InitialValue属性是如果用户没有改变初始值,会验证失败)CompareValidator:controltocompare(要进行对比的控件),type(比较类型设置),operator(比较运算符,默认为等于),ValueToCompare(进行比较的值) RangeValidator:type(验证类型(5种)),MaximumValue(最大值),MinimumValue(最小值)(包括上下限) RegularExpressionValidator:ValidationExpression(设置要匹配的正则表达式)ValidationSummary:showMessageBox(是否显示弹出的提示消息),ShowSummary(是否显示报告内容) HTML服务器控件和web服务器控件 4.什么是Session,如何进行Session的读写操作,使用什么方法可以及时释放Session?Session 是用于保持状态的对象。Session 允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。 通过键值对的方式进行读写;clear()和abandon()方法 5.运行https://www.sodocs.net/doc/d517300587.html,程序需要安装和配置什么,.NET Framework是不是必须要安装? 安装IIS和.NET Framework 必须安装 https://www.sodocs.net/doc/d517300587.html,配置信息分别可以存储在什么文件中? web.config文件和machine.config文件中 7.常用服务器控件,如Label、Button、TextBox、HyperLink、DropdownList的常用属性有哪些?label:text ,forecolor,visible Button:CommandName,CauseValidation, TextBox:AutopostBack,TextMode Hyperlink:NavigateUrl(单击Hyperlink时跳转的Url),Text,Target(设置NavigateUrl属性的目标框架),ImageUrl(设置Hyperlink中显示图片文件的Url) Dropdownlist:AutoPostBack 8.XMLHttpRequest对象的常用属性和方法有哪些? 方法是open()和send() 属性:ReadyState和Status,ResponseText,ResponseXML,ResponseStream https://www.sodocs.net/doc/d517300587.html,中的常用的指令有哪些?谈谈这些指令的常用属性的作用?

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指定单元格颜色设定

aspnet常用控件介绍

Label控件 功能说明:用于显示文本,提示信息,如窗体标题,文本框的标题 命名前缀:Lbl ASPX代码: 重要属性:Text 显示的文本 HyperLink控件 功能说明:建立文本超链接或图片超链接 命名前缀:Hlk ASPX代码:Sample 重要属性:NavigateUrl 链接URL ImageUrl 显示的图片URL Target 目标框架的名称,如"_blank","_top"等 Image控件 功能说明:用于显示图片 命名前缀:Img ASPX代码: 重要属性:ImageUrl 显示的图片URL Button控件 功能说明:用于创建按钮,执行命令 命名前缀:Btn ASPX代码: 重要属性:Text 显示在按钮上的文本 TextBox控件 功能说明:用于显示文本和接收用户输入的文本 命名前缀:Txt ASPX代码: 重要属性:Text 显示在按钮上的文本 TextMode 设置文本的模式,"Single"为单行文本框,"Multiline"为多行文本框 Rows 当TextMode设置为"Multiline"时,文本框显示的行数 Columns 设置文本框的宽度 MaxLength 设置文本框允许输入的最多字符数 CheckBox控件 功能说明:用于创建复选框 命名前缀:Chk

AjaxControlToolkit控件简要介绍

AjaxControlToolkit控件介绍 1.Accordion 功能:实现了QQ、Msn好友分类的折叠效果,就像包含了多个CollapsiblePanels 细节: (1)不要把Accordion放在Table种同时又把 FadeTransitions 设置为True,这将引起布局混乱 (2)每一个 AccordionPane control 有一个Header 和Content的 template (3)在Content中可以进行任意扩展,你什么都可以放上^_^ (4)有三种AutoSize modes :None(推荐) Limit Fill (5)Accordion表现的更像是一个容器 2. AlwaysVisibleControl 功能:最多的应用是在线小说的目录和不胜其烦的浮动小广告 细节: (1)避免控件闪烁,把这个控件要在目标位置时使用absolutely position (2) HorizontalSide="Center" VerticalSide="Top" 使用这个方法控制浮动在什么位置 3.Animation 功能:28个控件种效果最酷的!顾名思义实现动画效果 细节: (1)不只是控件:pluggable, extensible framework (2)用在什么时候:OnLoad OnClick OnMouseOver OnMouseOut OnHoverOver OnHoverOut (3)具体使用有很多可以谈的,有理由单独写一个Animation Xml 编程介绍 4.CascadingDropDown 功能:DropDownList联动,调用Web Service 细节: (1)DropDownList行为扩展 (2)如果使用Web service 方法签名必须符合下面的形式: [WebMethod] public CascadingDropDownNameValue[] GetDropDownContents( string knownCategoryValues, string category){...} 5.CollapsiblePanel 功能:Xp任务栏折叠效果 细节: (1)可以扩展任何一个 https://www.sodocs.net/doc/d517300587.html, Panel control (2) CollapsiblePanel 默认认为使用了标准 CSS box model 早期的浏览器要!DOCTYPE 中设置页面为自适应方式提交数据rendered in IE's standards-compliant mode. 6.ConfirmButton 功能:就是弹出来一个确定对话框 7.DragPanel 功能:页面拖动 细节: (1)TargetControlID 要拖动的控件 (2)DragHandleID 拖动的标题栏所在的ControlID 8.DropDown 功能:什么都可以以下拉菜单的形式弹出来 细节: (1)TargetControlID要在什么控件上实现扩展 (2)DropDownControlID弹出来什么 9.DropShadow 功能:阴影效果,其实可以放给美工实现 细节: (1)Width 单位:px 默认5px (2)Opacity 不透明度0-1.0 默认.5 10.DynamicPopulate 功能:能实用Web Service或页面方法来替换控件的内容

实验四VBNET程序设计基础和常用控件

实验四 https://www.sodocs.net/doc/d517300587.html,程序设计基础和常用控件 一、实验目的 本实验主要了解面向对象程序设计语言https://www.sodocs.net/doc/d517300587.html,基本语言元素包括集成开发环境、语言基础、基本控制结构、过程、常用控件和界面设计。通过本实验,读者将学会一些主要的面向对象的设计方法并可以利用https://www.sodocs.net/doc/d517300587.html,完成简单的应用程序开发。 二、实验环境 Microsofe Visual Studio .NET 2008 三、实验内容 1.设计一个Visual 的应用程序,窗体上有一个多行文本框和3个命令按钮,程序界面如图1所示。要求应用程序运行时,当单击窗体上【显示文本信息】按钮,文本框中显示红色文字“我喜欢https://www.sodocs.net/doc/d517300587.html,,因为它简单易学,使用方便。”当单击窗体上【改变背景色】按钮,文本框的背景色变为黄色。当单击窗体上【结束】按钮,程序结束。保存该应用程序。【实验步骤】: 1)创建工程:打开Visual Studio 后,点击左上角的新建项目,选中“模板”,展开选择Visual Basic,再选中Windows桌面,再在左边的类型中选择“Windows窗体应用程序”,在下方为此项目命名为“Win dowsApplication4.1”

2)先打开“工具箱”:展开左上角的“视图”,点击工具箱。 3)修改Form1的名称:右键选中From1,点击“属性”,在新弹出的属性菜单栏中,找到“Text”这个属性,将右边的“From1”改为“第一个https://www.sodocs.net/doc/d517300587.html,实验”即可。 4)设置一个普通文本框:在工具栏中,选中公共空间中的TextBox,然后拖入右边的设计窗口中,然后鼠标移到TextBox后,鼠标左键按住不放可以移动此控件。 5)调整文本框的大小:鼠标移动到文本框的左右边缘,鼠标箭头会变成一个左右的箭头,

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; }

datagridview绑定数据源的几种常见方式

datagridview绑定数据源的几种常见方式datagridview绑定数据源的几种常见方式 //////////////开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。 //////////////1)简单数据绑定 //////////////////using (SqlConnection conn = new SqlConnection(Config urationManager.ConnectionStrings["connStr"].ToString())) //////////////////{ ////////////////// SqlDataAdapter sda = new SqlDataAdapter("Select * Fr om T_Class Where F_Type='Product' order by F_RootID,F_Orders", conn); ////////////////// DataSet Ds = new DataSet(); ////////////////// sda.Fill(Ds, "T_Class"); ////////////////// //使用DataSet绑定时,必须同时指明DateMember ////////////////// //this.dataGridView1.DataSource = Ds; ////////////////// //this.dataGridView1.DataMember = "T_Class"; ////////////////// //也可以直接用DataTable来绑定 ////////////////// this.dataGridView1.DataSource = Ds.Tables["T_Class"]; //////////////////}

DataGridView中数据存入数据库方法

DataGridView做了新的数据显示控件加入到了.Net 05中,其强大的编辑能力让其成为了数据显示中必不可少的控件。目前对于DataGridView中的更新讲的挺多的,但直接的插入数据好像讲的不是太多,下面就以我的例子说明一下。 1、首先新建一个项目。 2、建立一个数据库连接类LinkDataBase。因为数据库操作有很多都是重复性工作,所以我们写一个类来简化对数据库的操作。 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Data.Sql; namespace Test ...{ class LinkDataBase ...{ //设置连接字符串 private string strSQL; //与数据库连接 private string connectionString = "Data Source=Localhost;Initial Catalog=Test;Integr ated Security=True"; private SqlConnection myConnection; private SqlCommandBuilder sqlCmdBld; private DataSet ds = new DataSet(); private SqlDataAdapter da; public LinkDataBase() ...{ } //根据输入的SQL语句检索数据库数据 public DataSet SelectDataBase(string tempStrSQL, string tempTableName) ...{ this.strSQL = tempStrSQL; this.myConnection = new SqlConnection(connectionString); this.da = new SqlDataAdapter(this.strSQL, this.myConnection); this.ds.Clear(); this.da.Fill(ds, tempStrSQL); //返回填充了数据的DataSet,其中数据表以tempTableName给出的字符串命名 return ds; } //数据库数据更新(传DataSet和DataTable的对象) public DataSet UpdateDataBase(DataSet changedDataSet, string tableName) ...{ this.myConnection = new SqlConnection(connectionString);

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、如果连接工作正常,点击确定返回向导窗口,然后点击下一步继续;

DataGridView自定义列

Winform下DataGridView控件自定义列System.Windows.Forms.DataGridView控件是net下,数据显示使用最多的控件之一,但是Datagridviewk控件列类型却仅仅只有6中 分别是button 、checkbox、combobox、image、link、textbox 等6种常见类型。这很难满足我们日常开发需要。如果需要复杂的应用,要么找第三方控件,要么只能自己开发。而功能强大的第三方控件往往是需要付费的。但我们开发需要的很可能只是简单的功能,如果为了某个简单功能而专门购买一个控件对于个人来说有些得不偿失。 那么我们只剩下自己开发一途。幸运的是DataGridView控件容许我们进行二次开发,可以自定义我们需要的控件列。下图就是自定义日期输入自定义列,通过下面的例子,你完全可以开发出自己需要的功能列。下面给出https://www.sodocs.net/doc/d517300587.html,和C#代码和原理 自定义列必须自己写三个类,这三个类必须继承系统标准的类或实现系统标准接口。这三个类实际上代表gridview控件中的列、列中的单元格、以及单元格中的具体控件 分别继承自系统 1、DataGridViewColumn 代表表格中的列 2、DataGridViewTextBoxCell 代表列中的单元格 3、IDataGridViewEditingControl 接口,单元格控件可以几本可以继承自任何标准控件或者自定义控件,但是必须实现IDataGridViewEditingControl 下面给出vb和C#的详细案例代码

一、C# 代码 using System; using System.Windows.Forms; public class CalendarColumn : DataGridViewColumn { public CalendarColumn() : base(new CalendarCell()) { } public override DataGridViewCell CellTemplate { get { return base.CellTemplate; } set { // Ensure that the cell used for the template is a CalendarCell. if (value != null && !value.GetType().IsAssignableFrom(typeof(CalendarCell ))) { throw new InvalidCastException("Must be a CalendarCell"); } base.CellTemplate = value; } } } public class CalendarCell : DataGridViewTextBoxCell { public CalendarCell() : base() { // Use the short date format. this.Style.Format = "d"; }

ASPNET的常用控件的使用实验

Web系统开发 实验报告 实验二 实验题目:内建对象的使用 指导老师:马浩 专业班级:计算机科学与技术系1106班姓名:李***(2011100***) 2014年3月30日

一、实验名称:内建对象的使用 二、实验目的: 熟练掌握https://www.sodocs.net/doc/d517300587.html,的常用属性与方法,包括Application,Session,Request,Response,和Sever对象。 学会在程序中应用https://www.sodocs.net/doc/d517300587.html,创建对象。 三、实验内容: 1、使用Application对象实现在线用户数的统计。 1)、新建一个网站WebSiteT5,在此网站中添加一个全局应用程序类,命名为“Global.asax”。 2)、添加一个Web窗体页,并以T-1.aspx为文件名保存该文件。在页面中添加一个ID设置为“counter”的TextBox控件,Page的Load事件处理. 2、设计简单的用户登录程序,用户输入非空的用户名即可登录,登录后该用户名即被存储于Session对象中,页面将转向T5-3.aspx。 1)、添加2个Web窗体页,分别命名为“T5-2.aspx”和“T5-3.aspx”。 2)、在T5-2.aspx页面中添加1个TextBox控件、1个Button控件和1个Lable 控件,ID分别为“usrname”、“Login”、和“LblDesc”,Button控件的Text属性设置为“登录”。 3)、添加登录按钮的Click事件 4)、设计“在线讨论区”的讨论信息的输入和显示程序,使用户登录后进入讨论区。讨论区分为消息显示和消息输入两个部分,用户输入的讨论信息保存于Application对象中。 5)、在T5-3.aspx页面中添加2个TextBox控件和1个Button控件,ID分别为“cont”、“cont1”和“talk”,其中Button控件的Text属性设置为“发言”。6)、添加Button控件的Click及Page的Load事件处理代码,代码如下: 四、实验代码(部分) 1.Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) Application.Lock()

MFC各种控件属性介绍

MFC各种控件属性介绍 VC++6.0控件工具箱: 2 图形控件(picture):常用于显示位图(Bitmap)和图标(Icon) 3 静态文本(Static Text):用来在指定的位置显示特定的字符串,一般用来标识附近另一个控件的内容。显示在静态文本控件中的字符串一般不再改变,但是在需要的时候,也可以通过调用相应的函数来进行设置。MFC提供了CStatic类支持静态控件。 4 编辑框(Edit Box):用来接收用户输入的字符串。通过选择编辑框的选项,编辑框可以接收字符串、数字、密码等;编辑框还可以设置成接收多行字符串的模式;可以自动进行大小写转换。编辑框可能向其父窗口发送多种控件通知,如果用户需要,可以对这些控件通知进行处理。MFC提供了CEdit类支持编辑框控件。

5 组成框(Group Box):用来包围具有逻辑关系的一组控件,在这些控件的周围加上边界和标题。需注意的是,组成框仅仅是在视觉效果上对控件进行“成组”,真正的“成组”工作还需要另外一些工作。 6 按钮(Button):用来接收用户的命令,应用程序在接收到用户命令后,通常需要进行一些后台工作。按钮可以响应单击或双击动作,在按钮接收到鼠标动作后,向其父窗口发送相应的控件通知,用户可以对这些控件通知进行消息映射,从而进行相应的处理。在一个对话框中,可以定义一个默认按钮,这只要选中按钮属性中的“Default”选项。如果在对话框活动的时候按下了Enter键,则等同于单击了默认按钮。MFC提供了CButton类支持按钮控件。 7 复选框(Check Box):用来显示某种可能的选择,该项选择是独立的,用户可以选中或取消该选项。在选项被选中的时候核选标记出现,选项被取消时核选标记消失。MFC中由CButton类对核选框进行支持,用户可以通过SetCheck()函数和GetCheck()函数设置或获取核选框当前的状态。 8 单选按钮(Radio Button):用来选择某种可能的选择,与核选框不同,该选项不是独立的。一般是几个单选按钮组成一组,同组中的单选按钮可以有也只能有一个按钮被选中。MFC同样使用CButton类对单选按钮控件进行支持,SetCheck()函数和GetCheck()函数对单选按钮也是适用的。 9 组合框(Combo Box):列表框和编辑框的组合,用户除了可以在列表中对已经存在的选项进行选择外,还可以输入新的选择。MFC提供了CComboBox类对组合框控件进行支持。

相关主题