假设我有一个包含A,B,C,D,E列的DataTable。

我有一个在虚拟模式下工作的DataGridView,因为我必须添加一个与DataTable绑定的列。此附加列是一个组合框,将A,B,D列的值合并为一个,并且在用户选择了一个项目之后,我想读取此选定的项目值以进行进一步处理。在方法DataGridView1_ValueChanged中,我尝试通过以下方式读取该值:

DataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString()


并且编译器显示例外,我应使用new运算符来初始化对象。
因此,好像我看到新行是在视觉上添加的,但是我无法访问它。

我被困在这里:(

最佳答案

我想您是在问为什么不能编译如下内容:

using System.Data;
using System.Windows.Forms;

namespace ZZZ
{
    class Program
    {
        private DataTable _table;
        private readonly DataGridView _view = new DataGridView();

        public void Setup()
        {
            CreateTable();
            _view.CellValueChanged += CellValueChanged;
        }

        private void CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            _view[e.ColumnIndex, e.RowIndex].Value.ToString();
        }

        private void CreateTable()
        {
            _table = new DataTable("Table");
            _table.Columns.Add("A");
            _table.Columns.Add("B");
            _table.Columns.Add("C");
            _table.Columns.Add("D");
            _table.Columns.Add("E");
            _table.Columns.Add("Combined");
        }

        static void Main(string[] args)
        {
            var p = new Program();
            p.Setup();
        }
    }
}


哪个看起来很奇怪。您应该能够进行编译。

关于c# - 虚拟模式下的C#DataGridView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4723670/

10-11 02:07