在我的datagridview中,我有一些列是read only
,所以我给了一些颜色。
当我在预先视图中加载DGV时,所有列都包括只读。
当用户在普通视图上隐藏时,我想只显示正常的可用列,并隐藏只读列和颜色。
我正在使用telerik并使用radgrid。
我尝试了以下方法,但它没有用。有没有更好的方法呢?谢谢。
private void normalToolStripMenuItem_Click(object sender, EventArgs e)//Normal View
{
DTURradGridView.Columns[2].IsVisible = false;
DTURradGridView.Columns[3].IsVisible = false;
DTURradGridView.Columns[4].IsVisible = false;
DTURradGridView.Columns[5].IsVisible = false;
DTURradGridView.Columns[7].IsVisible = false;
DTURradGridView.Columns[11].IsVisible = false;
DTURradGridView.Columns[2].ReadOnly = false;
DTURradGridView.Columns[3].ReadOnly = false;
DTURradGridView.Columns[4].ReadOnly = false;
DTURradGridView.Columns[5].ReadOnly = false;
DTURradGridView.Columns[7].ReadOnly = false;
DTURradGridView.Columns[11].ReadOnly = false;
DTURradGridView.CellFormatting -= DTURradGridView_CellFormatting;
}
private void advancedToolStripMenuItem_Click(object sender, EventArgs e) //Advanced View
{
DTURradGridView.Columns[2].IsVisible = true;
DTURradGridView.Columns[3].IsVisible = true;
DTURradGridView.Columns[4].IsVisible = true;
DTURradGridView.Columns[5].IsVisible = true;
DTURradGridView.Columns[7].IsVisible = true;
DTURradGridView.Columns[11].IsVisible = true;
DTURradGridView.Columns[2].ReadOnly = true;
DTURradGridView.Columns[3].ReadOnly = true;
DTURradGridView.Columns[4].ReadOnly = true;
DTURradGridView.Columns[5].ReadOnly = true;
DTURradGridView.Columns[7].ReadOnly = true;
DTURradGridView.Columns[11].ReadOnly = true;
DTURradGridView.CellFormatting += DTURradGridView_CellFormatting;
}
private void DTURradGridView_CellFormatting(object sender, CellFormattingEventArgs e)
{
if (e.CellElement.ColumnIndex != 2 && e.CellElement.ColumnIndex != 3 && e.CellElement.ColumnIndex != 4
&& e.CellElement.ColumnIndex != 5 && e.CellElement.ColumnIndex != 7 && e.CellElement.ColumnIndex != 11) return;
e.CellElement.DrawFill = true;
e.CellElement.NumberOfColors = 1;
e.CellElement.BackColor = Color.LightSlateGray;
e.CellElement.GradientStyle = GradientStyles.Linear;
}
当我点击普通视图时,我看到col索引2,3,4,5的颜色。所以 - =不起作用。
答案 0 :(得分:0)
更好的方法是在表单启动时设置只读列及其颜色,最好是按名称。见How to change color of a column in datagridview?
然后遍历列并隐藏或显示那些只读的内容,具体取决于您使用的模式。将其硬编码为不是一个好习惯:
DTURradGridView.Columns[2].ReadOnly = true;
DTURradGridView.Columns[3].ReadOnly = true;
DTURradGridView.Columns[4].ReadOnly = true;
谁知道什么是2,3,4?没有人。问题是你很容易迷失在自己的代码中。