65.9K
CodeProject 正在变化。 阅读更多。
Home

稀疏数组输入控件

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.40/5 (2投票s)

2004 年 12 月 21 日

3分钟阅读

viewsIcon

32072

downloadIcon

383

一篇关于一个简单控件的文章,用于在数组中输入稀疏值或值范围。

Sample Image

引言

您可能遇到需要为二维数组输入稀疏值的情况。最常见的情况是为一个人每周的工作时间输入时间范围。

在 CP 上搜索时,我发现了一些 ClearlyDotNet 的有趣作品(参见“A Time-Of-Day Picker control”),它提供了这种功能,除了通过返回 TimeSpans,将不允许一个通用的控件,允许输入非时间值。

我需要的是一个生成通用输出的控件,该输出可以保存到文件中,并在需要时恢复,并且能够动态更改行和列定义,同时保留在新行/列集中适用的任何选定单元格。

手头有时间,我决定自己编写。这篇文章是我劳动的成果,并且作为我从其他提交中获得的一些好想法的回报,放在这里 CP 上。您可以随意使用源代码,只需记住它是公共领域,所以保持这样!

使用代码(程序员的视角)

您可以通过更改以下属性来使控件满足您的要求

属性

定义

BackColor BackColor 属性控制控件背景的颜色。
Columns Columns 属性控制数据点名称,并在页面上显示。该属性接受一个字符串数组。这些值用于 Text 属性中。
CursorColor CursorColor 属性控制光标的颜色。
字体 Font 属性控制用于列标签的字体。
GridColor GridColor 属性控制网格的颜色。
GutterSize GutterSize 属性控制网格中每个单元格内的沟槽大小。该值被视为单元格高度/宽度的百分比。请注意,光标使用双倍的沟槽大小以方便辨别光标所在位置。
Rows Rows 属性控制数据点名称,并在页面上向下显示。该属性接受一个字符串数组。这些值用于 Text 属性中。
SelectedColor SelectedColor 属性控制网格中选定单元格的颜色。
文本

Text 属性是一个 XML 字符串,其中每个选定单元格都有一条条目。语法如下

<SparseArray>
<Entry>
  <Row>textfromRowsproperty</Row>
  <Col>textfromColsproperty</Col>
</Entry>
<Entry>
  <Row>textfromRowsproperty</Row>
  <Col>textfromColsproperty</Col>
</Entry>
<Entry>
  <Row>textfromRowsproperty</Row>
  <Col>textfromColsproperty</Col>
</Entry>
<Entry>
  <Row>textfromRowsproperty</Row>
  <Col>textfromColsproperty</Col>
</Entry>
</SparseArray>

如果您将此属性设置为无效值,则不会选择任何单元格。

所有属性都可以在设计时使用,并且更改会立即显示。

每当用户更改选定单元格时,控件都会触发一个事件 TextChanged。如果以编程方式设置 Text 属性,则不会触发此事件。

使用代码(最终用户的视角)

最终用户通过单击单元格来选择它们。他/她也可以通过单击起始单元格,然后将光标拖到结束单元格来选择范围。请注意,选择区域会导致已选定单元格的状态反转。

关注点

代码是在 Visual Studio 2003 和 Framework 1.1 下开发的。我的目的是共享代码,以便所有人都可以使用并可能从中学习一些东西。不要假设代码没有错误,因为它是在几个小时内完成的,但请随时进行您认为合适的任何更改和/或更正。

历史

发布到世界上的时间:2004 年 12 月 20 日。

© . All rights reserved.