使用C# .NET 将结构数组绑定到 Windows 窗体的方法
概要
本文介绍如何向 Windows 窗体绑定结构数组。 该示例由一个 Windows 窗体构成;该窗体包含三个文本框和四个命令按钮,文本框用于显示结构成员,按钮用于浏览数组。
返回页首
要求
下面列出推荐使用的硬件、软件、网络结构、技能、知识和所需的 Service Pack。
- Microsoft Visual C# .NET
- 对 C# 编程概念的理解达到中等水平
设计结构
将要绑定到窗体的结构必须有成员访问器。 结构成员访问器实际等同于类中的 PROPERTY SET 和 PROPERTY GET 结构。 本文示例使用的结构有三个成员(此处仅展示一个)。还提供了一个带参数的构造函数,但它不是必需的。
public struct Guitar
{
private string make;
private string model;
private short year; public Guitar(string Make, string Model, short Year)
{
make = Make;
model = Model;
year = Year;
} public string Make
{
get
{
return make;
}
set
{
make = value;
}
}
}
向数组添加结构实例
若要创建实例并将它们添加到数组中,请按下列步骤操作:
- 声明该结构类型的变量。
- 声明该结构类型的数组。
- 创建该结构的实例并将它们添加到数组中。
private Guitar[] arr =new Guitar[3];
arr[0] = new Guitar("Gibson", "Les Paul", 1958);
arr[1] = new guitar("Fender", "Jazz Bass", 1964);
arr[2] = new guitar("Guild", "Bluesbird", 1971);
将结构成员绑定到窗体控件
填充 ArrayList 后,可以将对象的单个属性绑定到 Windows 窗体控件。为此,请按照下列步骤操作:
- 调用 Textbox DataBindings 属性的 Add 方法。
- 传递将要绑定的控件属性、数组名称和结构成员。
textBox1.DataBindings.Add("Text", arr, "Make");
textBox2.DataBindings.Add("Text", arr, "Model");
textBox3.DataBindings.Add("Text", arr, "Year");
提供浏览数组的方式
可以使用 CurrencyManager 浏览数组。 为此,请将 CurrencyManager 与窗体的 BindingContext(在此例中即结构数组)关联。
private CurrencyManager currencyManager = null; currencyManager = (CurrencyManager)this.BindingContext[arr];
CurrencyManager 类有一个 Position 属性,可以通过操纵该属性来迭代数组的所有成员。 通过增加或减小 Position 的当前值,可以在窗体上显示数组的不同成员。
//Move forward one element.
currencyManager.Position++;
//Move back one element.
currencyManager.Position--;
//Move to the beginning.
currencyManager.Position = 0;
//Move to the end.
currencyManager.Position = arr.Length - 1;
分步示例
- 在 Visual C# .NET 中,新建一个 Windows 应用程序项目。默认情况下将创建 Form1。
- 将三个文本框添加到 Form1 并横向排列这些控件。
- 将四个按钮添加到 Form1 并横向排列这些控件。
- 将 Button1 的 Text 属性更改为 Next。
- 将 Button2 的 Text 属性更改为 Previous。
- 将 Button3 的 Text 属性更改为 First。
- 将 Button4 的 Text 属性更改为 Last。
- 将下面的代码添加到 Form1 类:
public struct Guitar
{
private string make;
private string model;
private short year; public Guitar(string Make, string Model, short Year)
{
make=Make;
model=Model;
year=Year;
} public string Make
{
get
{
return make;
}
set
{
make = value;
}
}
public string Model
{
get
{
return model;
}
set
{
model = value;
}
} public short Year
{
get
{
return year;
}
set
{
year = value;
}
}
} private Guitar[] arr = new Guitar[3];
private CurrencyManager currencyManager = null; - 将下面的代码添加到窗体的构造函数中,使之位于 InitializeComponent 调用之后(代码设计者已在此处插入了“TODO:Add any constructor code after InitializeComponent call”这一注释):
arr[0] = new Guitar("Gibson", "Les Paul", 1958);
arr[1] = new guitar("Fender", "Jazz Bass", 1964);
arr[2] = new guitar("Guild", "Bluesbird", 1971); currencyManager = (CurrencyManager)this.BindingContext[arr];
textBox1.DataBindings.Add("Text", arr, "Make");
textBox2.DataBindings.Add("Text", arr, "Model");
textBox3.DataBindings.Add("Text", arr, "Year"); - 切换以查看“窗体设置器”。
- 双击 Next 并将下面的代码添加到 button1_Click 事件:
currencyManager.Position++;
- 双击 Previous 并将下面的代码添加到 button2_Click 事件:
currencyManager.Position--;
- 双击 First 并将下面的代码添加到 button3_Click 事件:
currencyManager.Position = 0;
- 双击 Last 并将下面的代码添加到 button4_Click 事件:
currencyManager.Position = arr.Length - 1;
- 生成并运行该项目。
- 单击这些命令按钮以显示不同的数组元素。注意,如果愿意,您可以编辑这些对象的值。
使用C# .NET 将结构数组绑定到 Windows 窗体的方法的更多相关文章
- C++17尝鲜:结构化绑定声明(Structured Binding Declaration)
结构化绑定声明 结构化绑定声明,是指在一次声明中同时引入多个变量,同时绑定初始化表达式的各个子对象的语法形式. 结构化绑定声明使用auto来声明多个变量,所有变量都必须用中括号括起来. cv-auto ...
- C++17结构化绑定
动机 std::map<K, V>的insert方法返回std::pair<iterator, bool>,两个元素分别是指向所插入键值对的迭代器与指示是否新插入元素的布尔值, ...
- MATLAB中的结构数组
MATLAB中的结构数组 结构数组: 结构是包含一组记录的数据类型,而记录则是存储在相应的字段中.结构的字段可以是任意一种MATLAB数据类型的变量或者对象.结构类型的变量也可以是一维的.二维的或多维 ...
- [C语言]贪吃蛇_结构数组实现
一.设计思路 蛇身本质上就是个结构数组,数组里存储了坐标x.y的值,再通过一个循环把它打印出来,蛇的移动则是不断地刷新重新打印.所以撞墙.咬到自己只是数组x.y值的简单比较. 二.用上的知识点 结构数 ...
- 结构数组新发现之直接初始化《leetcode-合并区间》
leetcode有时候会要求一些奇怪(陌生)的数据形式,刷题因为数据形式卡住了真的很不好... 合并区间里定义了一个Interval的结构数组 struct Interval { int start; ...
- mvc数组绑定-jquery ajax
var list=[];//数组 list[0]=1001; list[1]=1002; list[1]=1003; var json_data = { selected: list}; $.ajax ...
- numpy中结构数组
在c语言中,我们可以使用关键字struct定义结构类型.和c语言一样,numpy也可以创建结构定义,这样可以很方便的读取二进制的C语言结构数组,将其转换为numpy数组对象,假设我们定义的结构数组如下 ...
- (C)结构数组
结构数组 对于大小相同但是类型不同的数组,定义结构体数组对其很有帮组.例如: char *keyword[NKEYS]; int keycount[NKEYS]; 这两个数组大小相同,因此 可以用另一 ...
- C#中自定义类数组和结构数组的使用
如有雷同,不胜荣幸,若转载,请注明 C#中自定义类数组和结构数组的使用 最近在很多项目中发现很多时候给定的数组要实现某个逻辑或处理很是麻烦,一维数组,二维数组,,,等等需要经过n多转换,还不如自己写一 ...
随机推荐
- “Missing artifact....."的解决办法
在使用Maven开发时,总会碰到一些问题,例如"Missing artifact org.apache.commons:commons-csv:jar:1.0-SNAPSHOT", ...
- jquery特效 商品SKU属性规格选择实时联动
转载,原文链接 功能:各种属性的值选中后,SKU填写表格进行变动,对属性.属性值的数量自适应,编辑时不因去掉勾选导致原有值不显示 所有代码均属原创,现在共享,如果有更好的实现方式,希望互相交流 最终实 ...
- markdown编辑器的小建议
markdown编辑器使用建议 yaung by 2012.12.1-------- 这里主要说明一下我们在windows和linux下对md文件的编辑方法,为大家提供一点个人建议,如果有更好的选择 ...
- php 图片上传 文件上传 大小 限制
nginx 413 Request Entity Too Large Php无法上传文件 查看php脚本运行用户,写个php脚本 <?php echo shell_exec("id ...
- plsql programming 12 集合(忽略, 个人感觉用不到)
关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用 ...
- Android实现录屏直播(二)需求才是硬道理之产品功能调研
请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/54254244 前面的Android ...
- IIS下PHP的ISAPI和FastCGI比较
在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...
- linux shell习题训练
shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...
- android自定义View_2——Making the View Interactive
前言:绘制出一个view只是自定义view的一个部分,还需要自定义一些view的行为,来反馈用户的使用操作,反馈的 行为要合理性,就像真是的物理世界一样,不要太玄幻哦. 可以将view的行为封装到in ...
- android自定义View_1——Custom Drawing
前言:自定义view重要的部分就是view的展示样式,为了实现view的样式可以重写onDraw()方法. 一:Override onDraw() 1.当覆盖了onDraw()方法后,需要一个Canv ...