我的问题是.. 我有一个 UserControl,我在上面放置了一个 DataGridView 和一个按钮。 在这个控件上我有这三个变量:
namespace MySpace
{
public partial class PanelWithDataGrid : UserControl
{
public DatabaseMenager FDatabaseManager { get; set; }
public SqlCeDataAdapter FDataAdapter { get; set; }
private DataTable FDataTable { get; set; }
[...]
构造函数如下所示:
public PanelWithDataGrid()
{
InitializeComponent();
}
而且..我有一个看起来像这样的方法:
public void Initialize(DatabaseMenager pDatabaseManager, DataTable pDataTable, SqlCeDataAdapter pDataAdapter)
{
FDataAdapter = pDataAdapter;
FDatabaseManager = pDatabaseManager;
FDataTable = pDataTable;
}
而且..我还有一个按钮,它有一个看起来像这样的点击事件:
private void btnAccept_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("Accept changes?", "Accept?", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
FDataTable.AcceptChanges();
FDataAdapter.Update(FDataTable);
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(String.Format("Error:\n\n{0}", ex.StackTrace));
}
}
现在进入正题:
在拥有此组件的表单中,我运行“Initialize”方法。
它显示我不想显示的数据。
然后我更改 datagridview 中单元格中的一些值。
但是当我点击这个控件的“接受”按钮时,它应该 接受更改并更新连接的数据表 到 datagridview - 有一个错误说“对象引用不 设置为一个对象的实例。”
请帮忙..
最佳答案
问题已解决。
此组件 - PanelWithDataGrid
- 放置在名为 AdminPanel
的组件上。
AdminPanel
正在执行方法 Initialize
,该方法将数据适配器和数据表传递给 PanelWithDataGrid 组件。这些变量是空的,因为它们是在 Initialize
方法之后创建的。
所以这个问题的解决方案是在运行 Initialize
方法之前创建一个 SqlCeDataAdapter
对象和另一个 Datatable
对象。
关于c# - 将对象传递给用户控件和 + 未将对象引用设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162673/