博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] C# TextBox、DataGrideView中的数据绑定
阅读量:6604 次
发布时间:2019-06-24

本文共 2188 字,大约阅读时间需要 7 分钟。

 原文 

 

一、TextBox的数据绑定

经常写用一个TextBox显示某个对象,然后编辑之后再保存的程序。以前都是在TextBox_TextChanged事件中修改对象的值,或者保存的时候再读取TextBox.Text属性保存对象的值。这样比较麻烦,而且经常容易出错。后来了解了C#的数据绑定,发现能够很好的解决这个问题。

1. 首先C#的TextBox本身就带数据绑定功能。

下面的代码就是把_myData对象的"TheValue"属性绑定到textBox1和textBox2的"Text"属性。最后一个参数不同:

1)其中DataSourceUpdateMode.OnPropertyChanged表示textBox1.Text发生变化,_myData.TheValue也变化,叫双向绑定。

2)DataSourceUpdateMode.Never表示Text1.Text变化不影响_myData.TheValue的值,是单向绑定。

1
2
3
4
5
6
private 
void 
Form1_Load(
object 
sender, EventArgs e)
{
    
_myData = 
new 
MyData();
    
textBox1.DataBindings.Add(
"Text"
, _myData, 
"TheValue"
false
, DataSourceUpdateMode.OnPropertyChanged);
    
textBox2.DataBindings.Add(
"Text"
, _myData, 
"TheValue"
false
, DataSourceUpdateMode.Never);
}

 

2.也许有人留意到了,为什么上面的叫"双向绑定"呢?如果_myData.TheValue的值变化了,两个文本框的Text会变化吗?不错,仅在 textBox上数据绑定还不叫双向绑定,对象数据变化要通知绑定该对象的控件才行。这样就需要对象实现INotifyPropertyChanged接 口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public 
class 
MyData : INotifyPropertyChanged
{
    
private 
string 
_theValue = 
string
.Empty;
 
    
public 
string 
TheValue
    
{
        
get 
return 
_theValue; }
        
set
        
{
            
if 
(
string
.IsNullOrEmpty(value) && value == _theValue)
                
return
;
 
            
_theValue = value;
            
NotifyPropertyChanged(() => TheValue);
        
}
    
}
 
    
public 
event 
PropertyChangedEventHandler PropertyChanged;
 
    
public 
void 
NotifyPropertyChanged<T>(Expression<Func<T>> property)
    
{
        
if 
(PropertyChanged == 
null
)
            
return
;
 
        
var 
memberExpression = property.Body 
as 
MemberExpression;
        
if 
(memberExpression == 
null
)
            
return
;
 
        
PropertyChanged.Invoke(
this
new 
PropertyChangedEventArgs(memberExpression.Member.Name));
    
}
}

 

3.好了,数据绑定完成了,看看效果吧。textBox1.Text变化—>_myData.TheValue变化—>textBox2.Text变化。反过来textBox2.Text变化就不是这样了,因为textBox2使用的单向绑定。

 

二、DataGridView的数据绑定

没什么可说的,DataGridView可以绑定DataSet,也可以绑定DataTable。直接设置DataSource属性。

1
2
3
DataSet dataSet = 
new 
DataSet();
dataGridView1.DataSource = dataSet;
dataGridView1.DataSource = dataSet.Tables[0];

 设置DataGridView的Column属性就可以决定哪一列显示的数据。

1
Column1.DataPropertyName = 
"ID"

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5814894.html
,如需转载请自行联系原作者
你可能感兴趣的文章
积跬步,聚小流------Bootstrap学习记录(1)
查看>>
HDUPhysical Examination(贪心)
查看>>
HTML5 FileAPI
查看>>
使用tdcss.js轻松制作自己的style guide
查看>>
发布《iBoard 电子学堂》DEMO代码
查看>>
SecureCRTPortable.exe 如何上传文件
查看>>
C++中public、protected及private用法
查看>>
苹果公司的产品已用完后门与微软垄断,要检查起来,打架!
查看>>
oracle服务器和客户端字符集的查看和修改
查看>>
顶级的JavaScript框架、库、工具及其使用
查看>>
AYUI -AYUI风格的 超美 百度网盘8.0
查看>>
简明 Python 教程
查看>>
Photoshop操作指南
查看>>
用MPMoviePlayerController做在线音乐播放
查看>>
ASP.NET调用cmd命令提示符拒绝访问解决方案
查看>>
Leetcode: Construct Binary Tree from Preorder and Inorder Transversal
查看>>
嵌入式开发之字符叠加---gb2313 国标码,utf8 国际码,unicode 无码
查看>>
Java查找算法——二分查找
查看>>
如何构建微服务架构
查看>>
【前端笔记】彻底理解变量与函数的声明提升
查看>>