0

2 年前に VB.NET を使い始めて以来、フォーラムをトロールしてすべての質問に対する答えを見つけることに成功しましたが、今回は失敗し、常に最良の答えを見つけてきたお気に入りのフォーラムに参加することにしました。これです :-)

私はどちらかというと初心者なので、高射砲を積んでみましょう...

私のメイン フォームには、データを表示するための DGV ("gridDisplay" と呼ばれます) があります。この DGV は読み取り専用であり、データの表示のみに使用され、操作には使用されません。

表示するデータを保持するクラス (「TaskData」と呼ばれる) のコピーがいくつかあり、メイン フォームに表示されるデータは、アクティブな「TaskData」クラスのデータです。

TaskData クラスが DGV を作成できるようにするという素晴らしいアイデアを思いつきました (今は疑問があります...)。TaskData クラスは、そこに含まれるデータとその表示方法を認識し、メイン フォームですべてを行う必要があります。そこで DGV を Active TaskData クラスの DGV に設定することでした (以下のコードを参照)。

With ActiveTask

    'Assign the active DataDisplay to the one in the main form
    Me.gridDisplay = .TaskData.DataDisplay
    Me.gridDisplay.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
    Me.gridDisplay.Refresh() 'Trying to make it update
    Me.gridDisplay.Update() 'Trying to make it update
    MsgBox("Row count: " & Me.gridDisplay.RowCount)
End With

OK、.TaskData.DataDisplay の DGV には 1 列と 500 行があります。メイン フォームの One は、デフォルトで 2 列で行が設定されていません (デザイナーで設定)

上記のコードの後、メイン フォームでは視覚的に何も起こりません。まだ2列0行。ただし、テキスト ボックスには「行数: 500」と表示されます。そこにブレーク ポイントを配置すると、Me.gridDisplay を調べることができ、そこにあるはずのすべてのデータが表示されます。表示されないのはなぜですか?ある DGV を別の DGV に割り当てることは賢明ではありませんか?

どんな助けでも大歓迎です。建設的な批判も同様です:-)

4

1 に答える 1

0


Me.gridDisplay.Refresh()
Me.gridDisplay.Update( )の前にもう一度データソースを呼び出す必要があると思います


gridDisplay.DataSource = dataset.Tables["your table"];

于 2013-02-08T09:19:43.650 に答える