Binding 将用户控件的2个或多个文本框绑定到DGV中。只有第一个文本框起作用
将用户控件绑定到DGV的数据有问题。当我只绑定到控件的一个文本框时,它就工作了。但是,当我绑定多个文本框时,只有第一个文本框起作用。请帮忙。我是初学者。下面是代码Binding 将用户控件的2个或多个文本框绑定到DGV中。只有第一个文本框起作用,binding,textbox,Binding,Textbox,将用户控件绑定到DGV的数据有问题。当我只绑定到控件的一个文本框时,它就工作了。但是,当我绑定多个文本框时,只有第一个文本框起作用。请帮忙。我是初学者。下面是代码 我创建了窗口表单应用程序(名为Test100) 我在项目Test100中添加了一个用户控件“MyBox”,在其中添加了两个文本框(textBox1和textBox2) 在MyBox.cs中,我有以下内容: using System; using System.Collections.Generic; using System.Com
- 我创建了窗口表单应用程序(名为Test100)
- 我在项目Test100中添加了一个用户控件“MyBox”,在其中添加了两个文本框(textBox1和textBox2)
- 在MyBox.cs中,我有以下内容:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace Test100 public partial class MyBox : UserControl { public string Box1 { get { return textBox1.Text; } set { textBox1.Text = value; } } public string Box2 { get { return textBox2.Text; } set { textBox2.Text = value; } } public MyBox() { InitializeComponent(); } }
- 构建之后,我打开了我的表单1:在表单1中添加了MyBox控件,在表单1中添加了DGV,添加了一个刷新表单的按钮。数据列表直接在Form1.cs中生成。表1.cs如下所示:
public partial class Form1 : Form { private List<Track> trackList = new List<Track>(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { trackList.Add(new Track { TrackID = 1234, Name = "Name1111" }); trackList.Add(new Track { TrackID = 5678, Name = "Name2222" }); trackList.Add(new Track { TrackID = 9012, Name = "Name333" }); BindingSource bindingSource1 = new BindingSource(); bindingSource1.DataSource = trackList; dataGridView1.DataSource = bindingSource1; myBox1.DataBindings.Add("Box1", dataGridView1.DataSource, "TrackID"); myBox1.DataBindings.Add("Box2", dataGridView1.DataSource, "Name"); } private void button1_Click(object sender, EventArgs e) { this.Refresh(); } } public class Track { public int TrackID { get; set; } public string Name { get; set; } }
公共部分类表单1:表单 { 私有列表trackList=新列表(); 公共表格1() { 初始化组件(); } 私有void Form1\u加载(对象发送方、事件参数e) { trackList.Add(新曲目) { TrackID=1234, Name=“Name1111” }); trackList.Add(新曲目) { TrackID=5678, Name=“Name2222” }); trackList.Add(新曲目) { TrackID=9012, Name=“Name333” }); BindingSource bindingSource1=新的BindingSource(); bindingSource1.DataSource=跟踪列表; dataGridView1.DataSource=bindingSource1; myBox1.DataBindings.Add(“Box1”,dataGridView1.DataSource,“TrackID”); myBox1.DataBindings.Add(“Box2”,dataGridView1.DataSource,“Name”); } 私有无效按钮1\u单击(对象发送者,事件参数e) { 这个。刷新(); } } 公共类轨道 { public int TrackID{get;set;} 公共字符串名称{get;set;} }
- 开始调试后,我更改了Box1值并按下按钮1,DGV上的TrackID随我更改的值而更改。但是,当我更改Box2的值并按下按钮1时,DGV上的Name列没有更改,但Box2返回到原始值
- 如果我只绑定Box2,那么Box2将工作
请帮忙。谢谢。好的。不要介意。我发现这是MS从2004年就认识到并在.NET1.1中修复的一个已知问题。
然而,我使用VS2010并使用Winform,我尝试应用微软针对这个问题修复的补丁,它可以正常工作。感谢阅读。您的问题代码解决了我的问题!谢谢