第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將文本框綁定到列表框 SelectedItem

將文本框綁定到列表框 SelectedItem

C#
德瑪西亞99 2023-07-22 16:29:44
我目前正在嘗試實(shí)現(xiàn)一個(gè)相對(duì)簡(jiǎn)單的數(shù)據(jù)管理應(yīng)用程序。我有一個(gè) classMember和 a BindingList<Member> membersList,以及 aListBox和一些TextBoxes 。是ListBox必然的membersList。現(xiàn)在,理想情況下,我希望將TextBoxes 綁定到ListBox.SelectedItem,以便用戶在 中選擇的任何元素在ListBox編輯TextBox中的元素時(shí)membersList都會(huì)更新。我嘗試將TextBoxes 綁定到ListBox.SelectedItem,但這使得 成為綁定創(chuàng)建時(shí)引用的Binding實(shí)際元素,而不是 中選擇的任何項(xiàng)目。ListBox.SelectedItemListBoxfirstNameTextBox.DataBindings.Add(new Binding("Text", membersList.SelectedItem, "firstName", false, DataSourceUpdateMode.OnPropertyChanged));實(shí)際上,我已經(jīng)通過(guò)在事件處理程序中清除并重新創(chuàng)建 es 來(lái)解決這個(gè)問(wèn)題Bindings,但這感覺(jué)非?!癶acky”,我懷疑有一個(gè)更標(biāo)準(zhǔn)的解決方案。TextBoxmembersList_SelectedIndexChanged(object sender, EventArgs e)我的另一個(gè)想法是將 s 設(shè)置為事件處理程序內(nèi)部的Bindinga ,但隨后我必須手動(dòng)將更改寫(xiě)入相應(yīng)的項(xiàng)目,這也讓我覺(jué)得這不是最佳解決方案。Member temporaryMemberListBox.SelectedItemmembersList_SelectedIndexChanged(object sender, EventArgs e)membersList有沒(méi)有一種方法可以實(shí)現(xiàn)Binding動(dòng)態(tài)化,即在創(chuàng)建時(shí),我向它表明數(shù)據(jù)源正在發(fā)生變化?或者一種更改Binding數(shù)據(jù)源而不刪除它并創(chuàng)建新數(shù)據(jù)源的標(biāo)準(zhǔn)方法?(或者這實(shí)際上是最佳實(shí)踐?)(另一件事要提的是:我是 C# 新手Bindings,在尋找解決方案時(shí),我發(fā)現(xiàn)顯然有兩個(gè)不同的類,一個(gè)在命名空間中System.Windows.Data,另一個(gè)在System.Windows.Forms命名空間中。我想我正在使用后者的類。也許我應(yīng)該使用另一個(gè)?)
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

正如評(píng)論中所述,將BindingList(或 DataTable)與BindingSource關(guān)聯(lián)起來(lái)可以帶來(lái)一些有趣的好處。

當(dāng)修改其中一個(gè)元素BindingList或?qū)⑿略靥砑拥搅斜碇袝r(shí),所有綁定控件都會(huì)自動(dòng)更新。

您可以使用MovePrevious()、MoveNext()、MoveFirst()、MoveLast()方法來(lái)導(dǎo)航 中的元素BindingList(還可以使用其他有用的方法和事件,請(qǐng)參閱有關(guān) BindingSource 功能的文檔)。

這里,a?BindingList<T>(其中TMember下面所示的類)被設(shè)置為BindingSource的DataSource。兩者都是Form類的Fields,可以根據(jù)需要修改。
然后將 BindingSource 用作 ListBox 的 DataSource。

Text然后,使用 BindingSource 將兩個(gè) TextBox 控件的屬性綁定到該類的屬性之一Member。這樣,Text 屬性就設(shè)置為 BindingList 的當(dāng)前 Item。所有控件都是同步的

txtMemberName.DataBindings.Add(new?Binding("Text",?membersSource,?
????"FirstName",?false,?DataSourceUpdateMode.OnPropertyChanged));
txtMemberLastName.DataBindings.Add(new?Binding("Text",?membersSource,?
????"LastName",?false,?DataSourceUpdateMode.OnPropertyChanged));

在實(shí)踐中,它是這樣工作的:

https://i.stack.imgur.com/sIlxa.gif

請(qǐng)注意,當(dāng)修改 TextBox 的 Text 時(shí),ListBox 的當(dāng)前 Item 會(huì)實(shí)時(shí)更新。


BindingList<Member> members = null;

BindingSource membersSource = null;


public partial class frmMembers : Form

{

? ? public frmMembers() {

? ? ? ? InitializeComponent();

? ? ? ? InitializeDataBinding();

? ? }


? ? private void InitializeDataBinding()

? ? {

? ? ? ? members = new BindingList<Member>();

? ? ? ? membersSource = new BindingSource(members, null);


? ? ? ? lstBoxMembers.DataSource = membersSource;

? ? ? ? txtMemberName.DataBindings.Add(new Binding("Text", membersSource,?

? ? ? ? ? ? "FirstName", false, DataSourceUpdateMode.OnPropertyChanged));

? ? ? ? txtMemberLastName.DataBindings.Add(new Binding("Text", membersSource,?

? ? ? ? ? ? "LastName", false, DataSourceUpdateMode.OnPropertyChanged));

? ? }


? ? private void btnAddMember_Click(object sender, EventArgs e)

? ? {

? ? ? ? var frmNew = new frmNewMember();

? ? ? ? if (frmNew.ShowDialog() == DialogResult.OK && frmNew.newMember != null) {

? ? ? ? ? ? members.Add(frmNew.newMember);

? ? ? ? }

? ? }


? ? private void btnMovePrevious_Click(object sender, EventArgs e)

? ? {

? ? ? ? if (membersSource.Position > 0) {

? ? ? ? ? ? membersSource.MovePrevious();

? ? ? ? }

? ? ? ? else {

? ? ? ? ? ? membersSource.MoveLast();

? ? ? ? }

? ? }


? ? private void btnMoveNext_Click(object sender, EventArgs e)

? ? {

? ? ? ? if (membersSource.Position == membersSource.List.Count - 1) {

? ? ? ? ? ? membersSource.MoveFirst();

? ? ? ? }

? ? ? ? else {

? ? ? ? ? ? membersSource.MoveNext();

? ? ? ? }

? ? }

}

新會(huì)員表格樣本:


public partial class frmNewMember : Form

{

? ? public Member newMember;


? ? private void btnSave_Click(object sender, EventArgs e)

? ? {

? ? ? ? if (string.IsNullOrEmpty(txtMemberName.Text) ||?

? ? ? ? ? ? string.IsNullOrEmpty(txtMemberLastName.Text)) return;

? ? ? ? newMember = new Member(txtMemberName.Text, txtMemberLastName.Text);

? ? }

}

會(huì)員類別示例:


[Serializable()]

public class Member

{

? ? public Member() { }

? ? public Member(string firstName, string lastName)

? ? {

? ? ? ? this.FirstName = firstName;

? ? ? ? this.LastName = lastName;

? ? }

? ? public string FirstName { get; set; }

? ? public string LastName { get; set; }

? ? public override string ToString() => $"{this.FirstName} {this.LastName}";

}


查看完整回答
反對(duì) 回復(fù) 2023-07-22
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)