0

DataGridView使用して、行を選択的に(反復的に)非表示にしているrow.Visible

void UpdateMessageWindow()
{
    MessageDataGridView.CurrentCell = null;
    foreach (DataGridViewRow row in MessageDataGridView.Rows)
    {
        row.Visible = DisplayedLevels.HasFlag((MessageLevel)row.Cells[3].Value);
    }
}

行を追加した後、セルをクリックするか(クリックしたセルを再描画するため)、キーを押すか、ウィンドウを非表示にするまで、行が再描画されないという問題があります。マウスをDGVの上に移動すると、カーソルが変化するときにDGVが存在することがわかります。

DataGridViewで関連するサウンドメソッドのすべての組み合わせを試したことは確かですが、何も役に立ちませんでした。

編集: 「Visible」列をDataSetテーブルに追加し、設定messageBindingSource.Filter = "Visible"し、UpdateOutputを次のように書き換えることにより、BindingSource.Filterを使用するように変更しました。

void UpdateOutputWindow() 
{
    foreach (JobDataSet.MessagesRow row in _dataSet.Messages)
    {
        row.Visible = DisplayedLevels.HasFlag(row.Level);
    }
}

しかし、それでも同じ動作を示しています。

4

2 に答える 2

0

答えは、DataTable.RowChangedイベントにハンドラーを追加することでした。

_dataSet.Messages.RowChanged += delegate
                                {
                                    MessageDataGridView.Invalidate();
                                    MessageDataGridView.Update();
                                };

おそらく非効率的ですが、機能します。

于 2013-02-28T10:07:13.153 に答える
0

次のコマンドでDataGridViewに焦点を合わせてみてください。

MessageDataGridView.Focus();
于 2013-02-27T16:03:35.443 に答える