WinForm(十六)綁定

在WinForm中,有很多添加和修改數據的場景,一般的做法是當點擊“添加”按鈕時,收集各控件的值,然后賦值給實體類的各個屬性,然后再完成保存工作。在修改時,首先把實體的原值,一個個賦值給控件,修改保存時,再反過來把值賦給實體,最后持久化保存。

除了這種做法,用綁定也是可以完成數據的分發和收集,綁定可以把實體的原值賦給控件,修改完控件后,實體的屬性值也一起變化了,最后持久化提交實體就可以了。

舉個例子:下面是一些實體類。

record Person
{public string Name { get; set; }public Sex Sex { get; set; }public DateTime Birthday { get; set; }public Tel Tel { get; set; }public bool IsResult { get; set; }public bool IsTest { get; set; }public List<Goods> Goodses { get; set; } public string GoodsString{get{var s = "";foreach (var goods in Goodses){s += goods;}return s;}}
}
enum Sex
{男,女
}
record Goods
{public int ID { get; set; }public string Name { get; set; }public double Quantity { get; set; }public decimal Price { get; set; }
}

有實體類后,模擬加載數據:

Person person = new Person
{Name = "桂素偉",Sex = Sex.女,Tel = new Tel { Name = "手機", No = "13333333333" },Birthday = DateTime.Parse("1979-06-22"),Goodses = new List<Goods>{new Goods{ID=1, Name="商品A", Price=1.1m,Quantity=10},new Goods{ID=2, Name="商品B", Price=2.1m,Quantity=20},}
};

接下來就是綁定了,不同數據類型的屬性,綁定的控件不一樣,這里更舉了幾種(為了了解是什么控件,控件名稱沒有作更改):

private void Form1_Load(object sender, EventArgs e)
{//TextBox綁定最簡單textBox1.DataBindings.Add(new Binding("Text", person, "Name"));//DateTimePicker綁定與TextBox類型,時間類型屬性綁定dateTimePicker1.DataBindings.Add(new Binding("Text", person, "Birthday"));//先把集合綁定到ComboBox,再綁定,綁定時要用控件的SelectedItem屬性comboBox1.DataSource = Enum.GetValues(typeof(Sex));comboBox1.DataBindings.Add(new Binding("SelectedItem", person, "Sex"));//這是最常用的綁定dataGridView1.DataSource = person.Goodses;//CheckBox綁定bool類昔checkBox1.DataBindings.Add(new Binding("Checked", person, "IsTest"));//如查外部集合,賦值DataSource,再綁定listBox1.DataSource = new List<Tel>{new Tel{Name="手機",No="13333333333" },new Tel{Name="電話",No="88888888" },};listBox1.DisplayMember = "Name";listBox1.ValueMember = "No";listBox1.DataBindings.Add(new Binding("SelectedItem", person, "Tel"));//對于實體屬性,拆分成RadioButton兩個控件,需特殊處理radioButton1.DataBindings.Add(new Binding("Checked", person, "IsResult"));var b = new Binding("Checked", person, "IsResult");b.Format += B_Format;b.Parse += B_Parse;radioButton2.DataBindings.Add(b);
}

當然這不是合部,具體和用的控件有很大關系,不過當把大部分控件都擼過一次后,都可以抽象成一個自用的庫,更簡單,更快捷使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280742.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在ubuntu 16.04里使用python—scrapy將爬取到的數據存到mysql數據庫中的一些隨筆

一、將爬取的數據保存到mysql數據庫的代碼&#xff08;已經能將爬取的數據保存到json文件&#xff09; &#xff08;1&#xff09;編輯Pipeline.py文件 &#xff08;2&#xff09;編輯settings.py文件 二、將數據保存至mysql數據庫出現的問題 &#xff08;1&#xff09;在將數據…

powershell XML操作

1.直接加入xml結構 加入<title>是為了后續能直接添加其他node&#xff0c;否則&#xff0c;后續操作可能無法AppendChild $xml "<?xml version1.0 encodingUTF-8?><case><title>please check each point</title></case>"$xm…

十大經典排序算法(動圖演示)

轉自&#xff1a;https://www.cnblogs.com/onepixel/articles/7674659.html 0、算法概述 0.1 算法分類 十種常見排序算法可以分為兩大類&#xff1a; 非線性時間比較類排序&#xff1a;通過比較來決定元素間的相對次序&#xff0c;由于其時間復雜度不能突破O(nlogn)&#xff0c…

【Python】安裝配置Anaconda

優點&#xff1a;解決Python 庫依賴問題清華安裝鏡像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 轉載于:https://www.cnblogs.com/Neo007/p/7419253.html

如何實現 WPF 視頻封面查看器

如何實現 WPF 視頻封面查看器控件名&#xff1a;NineGridView作 者&#xff1a;WPFDevelopersOrg - 驚鏵原文鏈接[1]&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40&#xff1b;Visual Studio 2019;實現視頻封面查看器NineGridView基于Grid實…

如何從Internet Explorer或Edge遷移到Chrome(以及為什么要遷移)

Google’s Chrome web browser is now more widely used than Microsoft’s Internet Explorer and Edge combined. If you haven’t switched to Chrome yet, here’s why you might want to–and how to quickly switch over. Google的Chrome網絡瀏覽器現在的使用范圍比Micro…

SQL中觸發器的使用

創建觸發器 是特殊的存儲過程&#xff0c;自動執行&#xff0c;一般不要有返回值 類型&#xff1a; 1.后觸發器 &#xff08;AFTER,FOR&#xff09;先執行對應語句&#xff0c;后執行觸發器中的語句 2.前觸發器 并沒有真正的執行觸發語句&#xff08;insert&#xff0c;update…

powershell XML數據保存為HTML

1.設置html頭和尾 beginning內包含表格表頭 $beginning {<html><head><meta charset"utf-8" /><title>Report</title><STYLE type"text/css">h1 {font-family:SegoeUI, sans-serif; font-size:30}th {font-family:…

瀏覽器自動化操作標準--WebDriver

WebDriver是一個瀏覽器遠程控制協議&#xff0c;是一個既定標準&#xff0c;它本身的內容非常豐富&#xff0c;本文不可能全部介紹&#xff0c;本文僅粗略帶大家了解一下WebDriver的部分內容以及一個小的實際應用。想深入了解的請參考W3C文檔WebDriver. 問題背景 開發的同學都知…

versa max_如何從Mac(和Vice Versa)打開或關閉iPhone的Safari選項卡

versa maxMany of us are familiar with this scenario: you’re looking something up on our iPhone, find exactly what we’re looking for, but then have to put our phone away to attend to something else. Later, while working on your Mac, you want to continue w…

【nuxtjs 指南】解決nuxtjs本地開發跨域和防止路由與api沖突問題

目前vue很火&#xff0c;大部分開發者把vue當做框架首選&#xff0c;然而spa是對搜素引擎很不友好&#xff0c;就會想到ssr&#xff0c;在vue社區nuxtjs完美的解決了這個問題&#xff0c;目前nuxt還不算太成熟&#xff0c;當然對于新手坑比較多&#xff0c;當我們確定使用了這個…

WPF效果第二百零五篇之自定義導航控件

前面摸索了一下會簡單玩耍自定義控件了;今天再次分享一下N年前想要在GIS實現的一個導航控件;來看看最終實現的效果:1、先來看看前臺xaml布局:2、后臺路由事件就參照上一篇快捷方式3、關鍵依賴屬性的回調觸發路由事件:4、內部Arc的MouseDown事件觸發路由事件:private void Arc_M…

python3用list實現棧

工作中遇到的需求&#xff0c;****代表標簽數據別的信息&#xff1a; D01  ********  1  ******** D01  ********  2  ******** D01  ********  3  ******** D01  ********  4  ******** D02  ********  1  ******** D02  ********  2  **…

powershell 腳本運行策略,參數....

1.運行策略 Powershell一般初始化情況下都會禁止腳本執行。腳本能否執行取決于Powershell的執行策略。 PS E:> Get-ExecutionPolicy Restricted PS E:> Set-ExecutionPolicy UnRestricted 2.直接運行 PS E:> "Hello,Powershell Script" > MyScript.ps…

linux每日命令(5):mkdir命令

閱讀目錄(Content)1&#xff0e;命令格式&#xff1a;2&#xff0e;命令功能&#xff1a;3&#xff0e;命令參數&#xff1a;4&#xff0e;命令實例&#xff1a;1&#xff1a;創建一個空目錄2&#xff1a;遞歸創建多個目錄3&#xff1a;創建權限為777的目錄4&#xff1a;創建新…

mac命令行將輸出寫入文件_如何在Linux中使用命令行將PDF文件轉換為可編輯文本...

mac命令行將輸出寫入文件There are various reasons why you might want to convert a PDF file to editable text. Maybe you need to revise an old document and all you have is the PDF version of it. Converting PDF files in Windows is easy, but what if you’re usi…

Windows Socket和Linux Socket編程的區別

2019獨角獸企業重金招聘Python工程師標準>>> 1、一些常用函數的移植 http://www.vckbase.com/document/viewdoc/?id1586 2、網絡 socket相關程序從Windows移植到Linux下需要注意的: 1)頭文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 錯誤處理&…

使用 C# 開發的現代輕量級 Windows 文本編輯器

你好&#xff0c;這里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;實用的工具和組件&#xff0c;希望對您有用&#xff01;Notepads 是一個具有簡約設計的現代化輕量級文本編輯器&#xff0c;在 github 上開源&#xff0c;由微軟大佬 Jiaqi Liu 開發。開發背…

分布式壓測系列之Jmeter4.0第一季

1&#xff09;Jmeter4.0介紹 jmeter是個純java編寫的開源壓測工具&#xff0c;apache旗下的開源軟件&#xff0c;一開始是設計為web測試的軟件&#xff0c;由于發展迅猛&#xff0c;現在可以壓測許多協議比如&#xff1a;http、https、soap、ftp、database數據庫、LDAP 輕量目…

powershell 查看系統設備\device status

查看設備 $allDevice"C:\Data\soundDevAll.txt" (Get-WmiObject -Class Win32_SoundDevice).Name|Out-File $allDevice device status $deviceInfoGet-WmiObject Win32_PnPEntity| select Name, Status | where {$_.Name -like "$deviceName"} $set…