我在Linux上使用mono的方法DataGridViewColumn.Frozen
遇到问题,而使用谷歌搜索这个问题对我没有帮助。
我需要在C#mono应用程序中冻结DataGridView
的几列,并且在Windows上可以按预期工作,但是任何时候我将二进制文件复制到Linux PC时,方法Frozen
根本不起作用。
我在填充Columns[index].Frozen
之前和之后都尝试过Columns[name].Frozen
和DataGridView
。
这是我的单声道版本的错误,还是我需要一些其他代码才能完成此工作?
我在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
未实现。由于Xamarin放弃了Windows Forms,所以我不希望很快修复该问题。恐怕您将不得不自己实施它。
希望这(以某种方式)有所帮助。