DataGridViewColumn.Frozen 单声道 2.10

DataGridViewColumn.Frozen with mono 2.10

我在 Linux 上使用单声道时遇到方法 DataGridViewColumn.Frozen 的问题,谷歌搜索这个问题对我没有帮助。

我需要在 C# mono 应用程序中冻结 DataGridView 的几列,并且在 Windows 上它按预期工作,但任何时候我将我的二进制文件复制到 Linux PC,方法Frozen根本行不通

我在填充 DataGridView 之前和之后都尝试了 Columns[index].FrozenColumns[name].Frozen

这是我的单声道版本的错误,还是我需要一些额外的代码才能使它工作? 我在 SUSE Linux.

上使用 mono 2.10(不幸的是,我无法升级它)

UPD

制作了一个简单的应用程序并在 mono 4.6.2 上进行了测试:与 2.10 相同,方法 Frozen 不起作用。

测试应用代码:

DataTable _tbl = new DataTable();
_tbl.Columns.Add("Name", typeof(String));
_tbl.Columns.Add("val1", typeof(String));
_tbl.Columns.Add("val2", typeof(String));

_tbl.Rows.Add("1", "val11", "val22");
_tbl.Rows.Add("2", "val11", "val22");

dgvVars.DataSource = _tbl;
dgvVars.Columns["Name"].Frozen = true;
dgvVars.Columns[0].Frozen = true;

Windows 表单是在 System.Drawing 之上的 Mono 中实现的。因此,由于没有 P/Invokes.

,因此或多或少地遵循代码很容易

在撰写本文时(2018 年 2 月),我没有在 DataGridView.cs 文件中找到对 属性 Frozen 的提及。

另外,我找到了 DataGridViewTest.cs in searchcode.com。如果您对 Frozen 进行文本搜索,您会发现:

// /* NIE for the moment... */ Assert.AreEqual (true, cell.Frozen, "#cell.Frozen");

我认为这意味着 Frozen 没有实现。由于 Windows Forms 已被 Xamarin 放弃,我不希望很快修复它。

恐怕你得自己实现了。

希望这(以某种方式)有所帮助。