【发布时间】:2020-02-05 17:42:37
【问题描述】:
对于那里的大师,我在表单中传递值 2 个用户控件时遇到问题。我有具有组合框和按钮的用户控件 A,以及具有数据网格视图的控件 B。现在我想在 datagridview 中的用户控件 B 中显示数据。如何将数据从 UCA 传递到 UCB? 这是我要传递的数据:
所以在用户控件 A 中,当我单击名为 Generate 的按钮时,它将使用下面的 GetConvo() 中生成的数据填充用户控件 B 中的 datagridview。
public DataTable GetConvo() {
DataTable table = new DataTable();
table.Columns.Add("ConvoUser", typeof(Object));
table.Columns.Add("Message", typeof(Object));
table.Columns.Add("Date", typeof(Object));
var _data = from data in User.GetMatchConvo(comboBox3.SelectedValue.ToString())
select new {
convoUser = data.actor_id,
convoMessage = data.message,
convoDate = data.creation_timestamp
};
foreach (var data in _data) {
table.Rows.Add(data.convoUser, data.convoMessage, data.convoDate);
}
//dataGridView1.AllowUserToAddRows = false;
//dataGridView1.AllowUserToDeleteRows = false;
return table;
}
private UserInterface User = new UserData();
【问题讨论】:
-
与处理任何其他控件的方式相同:引发事件(使用自定义
EventArgs派生类)或使用 DataBindings。或两者。您还可以使用 intermediate 类来处理特定对象之间的特定关系。 -
我看到很多建议使用事件来做到这一点,但我还没有尝试使用事件,我不知道如何正确地做到这一点。新手在这里..
-
userControlB.Data = userControlA.Data而UserControlB中的Data是一个公共属性,它获取或设置DataGridView.DataSource和UserControlA中的Data是一个公共属性,它获取点击后生成的数据。 -
要从外部访问 UserControl 的控件,您需要将它们设为公共,或者您需要定义公共属性以访问它们或定义公共属性以公开它们的特定属性。
标签: c# .net winforms user-controls