稀疏数组输入控件






1.40/5 (2投票s)
2004 年 12 月 21 日
3分钟阅读

32072

383
一篇关于一个简单控件的文章,用于在数组中输入稀疏值或值范围。
引言
您可能遇到需要为二维数组输入稀疏值的情况。最常见的情况是为一个人每周的工作时间输入时间范围。
在 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 属性控制网格中选定单元格的颜色。 |
文本 |
<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 日。