将对象传递给用户控件和未设置为对象实例的+ Object引用

本文关键字:对象 实例 Object 引用 设置 给用户 控件 | 更新日期: 2023-09-27 17:50:38

我的问题是我有一个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));
            }
        }

现在言归正传:

  1. 在拥有该组件的表单中,我运行"Initialize"方法。

  2. 显示我不想显示的数据。

  3. 然后我改变了datagridview中单元格的一些值

  4. 但是当我点击"接受"按钮这个控件应该接受更改并更新所连接的数据表到datagridview -有一个错误说"对象引用不是设置为对象的实例。"

请帮. .

将对象传递给用户控件和未设置为对象实例的+ Object引用

问题解决

这个组件- PanelWithDataGrid -被放置在一个名为AdminPanel的组件上。

AdminPanel正在执行方法Initialize,该方法将数据适配器和数据表传递给PanelWithDataGrid组件。这些变量是空的,因为它们是在Initialize方法之后创建的。

所以这个问题的解决方案是在运行Initialize方法之前创建一个SqlCeDataAdapter对象和另一个Datatable对象。