0

私のdatagridviewにはread only、いくつかの列がありますので、いくつかの色で指定しました。読み取り専用を含むすべての列を含む事前ビューでDGVをロードすると。ユーザーが通常表示をクリックしたときに、通常のeitable列を表示し、読み取り専用の列と色を非表示にします。

私は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;    
}

通常のビューをクリックすると、列インデックス2、3、4、5の色が表示されます。したがって、-=は機能していません。

4

1 に答える 1

0

より良いアプローチは、フォームの起動時に、できれば名前で、読み取り専用の列とその色を1回設定することです。datagridviewで列の色を変更する方法を参照してください。

次に、列を繰り返し処理し、現在のモードに応じて、読み取り専用の列を非表示または表示します。このようにハードコーディングすることはお勧めできません。

DTURradGridView.Columns[2].ReadOnly = true;
DTURradGridView.Columns[3].ReadOnly = true;
DTURradGridView.Columns[4].ReadOnly = true;

2、3、4が何であるか誰が知っていますか?誰でもない。問題は、自分のコードで簡単に迷子になる可能性があることです。

于 2012-10-26T18:10:33.473 に答える