0

MS Visual Studio と C#.net 4.0 を使用。

それで、重複をチェックする私のプログラムの他の部分を完成させました。それを気に入った上司に見せた後、「重複した値を持つ部品番号を示す datagridview の結果を選択する場合、選択した結果と等しい maindatagridview を強調表示することは可能ですか」と尋ねました。

まず第一に、彼の言いたいことは理解できましたが、これを表現するのはかなり難しく、例を探すのが非常に困難でした。

コードはありませんが、現在持っているコードを表示できます。

私が最初にしたことは、どの行が選択されているかを検出できるデータグリッド上のイベント ハンドラーを特定することでした。「selectionchanged」を使用します。

更新:: わかりましたが、私のコードを再利用することで私が何を意味したかをお見せします。コードは非常に似ていますが、出発点にすぎないことに注意してください。以前の方法を新しい方法に組み込む場合があります。

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {

        string getPartSelected;
        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();


        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;
            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
            }
        }

    }

ご覧のとおり、これは機能しますが、いくつかの問題があります。強調表示しますが、強調表示を解除しないので、以前に選択したものを保存する必要があると思いますか? (これが最善の方法かどうかはわかりません)。

強調表示はユーザーにとって十分ではないため、ナビゲーションを追加する必要もあります。現時点では selected = true が追加されていますが、選択が変更されたときに以前の値を使用する必要があります。

4

1 に答える 1

0

これは私が不正行為をしているように感じますが、問題を解決するために私がしたことは次のとおりです。

private void MyErrorGrid_SelectionChanged(object sender, EventArgs e)
    {

        string getPartSelected;

        getPartSelected = MyErrorGrid.CurrentCell.Value.ToString();

        foreach(DataGridViewRow allrow in ParetoGrid.Rows)
        {
            ParetoGrid.Rows[allrow.Index].DefaultCellStyle.BackColor = Color.Empty;
            ParetoGrid.Rows[allrow.Index].Selected = false;
        }
        //might need a do while
        foreach (DataGridViewRow row in ParetoGrid.Rows)
        {
            var cellValue = row.Cells["Keycode"].Value;

            if (cellValue != null && cellValue.ToString() == getPartSelected)
            {
                ParetoGrid.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
                ParetoGrid.Rows[row.Index].Selected = true;


            }
        }

    }

ご覧のとおり、次の変更に入る前に基本的にすべてクリアされるため、以前の値を使用せずに機能します。誰かがより良い解決策を持っている場合は、気軽に答えてください

唯一のことは、行がたくさんある場合ですが、データグリッドビューをスクロールせずに選択して強調表示しますが、これを行う同様の方法はありますか?

于 2012-04-25T10:17:22.220 に答える