2

私のコードは操作をループしており、リストビュー コントロールにフィードバックを追加しています。以前は、私のコードは問題なく動作していましたが、今日は何かが変わっています...

リストビュー コントロールは次のように始まります。 前

...しかし、追加したアイテムを表示するのではなく、Update() または Refresh() の呼び出しを発行すると、次のようにレンダリングされます。

後

この時点で、コントロールはまだ有効で表示されています。実際、私のコードとのやり取りは、新しい項目と Update() を追加することだけです。

アイテムを追加するには、次を使用しています。

lvwDrawings.Items.Add(new ListViewItem(new string[]
{
    drawing.PartNo,
    drawing.Revision.ToString(),
    drawing.Issue,
    drawing.DrgTypeText,
    errorStatus !=null ? errorStatus : drawing.Status,
    drawing.Filepath
}));

ここで何らかの問題を導入した場合に備えて、より単純な でテストしましたlvwDrawings.Items.Add("test");が、結果は同じでした。QuickWatch を実行すると、コントロールは x 個の項目が含まれていることを正しく伝えます...

4

1 に答える 1

1

OK、問題を発見しました - 以前はlvwDrawings.Items.Clear()異なる実行間でリストをクリアしなければならなかった何らかの未知の理由で、どうにかしてlvwDrawings.Clear(). これにより、リストビューのアイテムだけでなく、列もクリアされます。

2 つの点で興味深いのは、特定の列を含む ListViewItem を追加しようとしたときに、列がなかったときに反対されたということです。変化する(??!)。

適度に興味深い転用:

最初のリストビューの下に2番目のリストビューを作成し、問題が発生するまで作業して問題を発見しました。そのプロセスの一環として、デザインに列を追加しました。そのうちの 1 つを呼び出しPathましたが、デザイナーは反対しませんでした。

ただし、コードでは、静的クラス Path (例: Path.GetDirectoryName()) のメソッドへの参照により、「ColumnHeader Path にはメソッド 'xxx' がありません」などのエラーが発生しました。明らかに、Path を参照するときは、リストビュー内の列を参照していると想定していました。

さらに、列の名前を(「FullPath」に)変更しようとすると、コード内のパスへのすべての参照の名前が変更されました。FullPath.GetDirectoryName()....

于 2012-08-17T17:44:59.293 に答える