1

私のアプリケーションでは、あるタブ コントロールから別のタブ コントロールに移動する DataGridView があります。

親を変更することでこれを行っています。これは、元のタブ コントロールから新しいタブ コントロールへの最初の移動では問題なく動作しますが、親を元のタブ コントロールに戻すと、DataGridView が表示されます (すべての列が表示されます) が、ビューにはデータがありません。

データを DataGridView にリロードし、コントロールを更新/無効化して再描画しようとしましたが、それでも空で表示されます。ただし、コントロールが 2 番目の親に戻ると、データは元に戻ります。

私は別の DataGridView にもこの正確なコードを使用していますが、まったく問題なく動作します。

どんなアイデアでも大歓迎です。事前に感謝します。

オリジナルからセカンダリまで

gvwRFIs.Parent = tabProcessingRFI; //Working
gvwConsentInfoMemos.Parent = tabProcessingMemos; //Working

セカンダリーからオリジナルへ

gvwRFIs.Parent = tabConsentInfoRFI; //Empty Data
gvwConsentInfoMemos.Parent = tabConsentInfoMemos; //Working

RFI DataGridView デザイナー コード

        // 
        // gvwRFIs
        // 
        this.gvwRFIs.AllowUserToAddRows = false;
        this.gvwRFIs.AllowUserToDeleteRows = false;
        this.gvwRFIs.AllowUserToResizeRows = false;
        this.gvwRFIs.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
        this.gvwRFIs.BackgroundColor = System.Drawing.Color.White;
        this.gvwRFIs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.gvwRFIs.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
        this.gvwID,
        this.gvwType,
        this.gvwSeq,
        this.gvwCreated,
        this.gvwProcessor,
        this.gvwLetter,
        this.gvwResponded,
        this.gvwS,
        this.gvwDetails});
        this.gvwRFIs.Dock = System.Windows.Forms.DockStyle.Fill;
        this.gvwRFIs.Location = new System.Drawing.Point(3, 3);
        this.gvwRFIs.MultiSelect = false;
        this.gvwRFIs.Name = "gvwRFIs";
        this.gvwRFIs.ReadOnly = true;
        this.gvwRFIs.RowHeadersVisible = false;
        this.gvwRFIs.RowHeadersWidth = 4;
        this.gvwRFIs.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
        this.gvwRFIs.Size = new System.Drawing.Size(1078, 422);
        this.gvwRFIs.TabIndex = 4;
        this.gvwRFIs.DoubleClick += new System.EventHandler(this.gvwRFIs_DoubleClick);

同意タブ コントロール デザイナー コード

        // 
        // tabConsentInfoRFI
        // 
        this.tabConsentInfoRFI.Controls.Add(this.gvwRFIs);
        this.tabConsentInfoRFI.Controls.Add(this.lvwConsentInfoRFI);
        this.tabConsentInfoRFI.Location = new System.Drawing.Point(4, 32);
        this.tabConsentInfoRFI.Name = "tabConsentInfoRFI";
        this.tabConsentInfoRFI.Padding = new System.Windows.Forms.Padding(3);
        this.tabConsentInfoRFI.Size = new System.Drawing.Size(1084, 428);
        this.tabConsentInfoRFI.TabIndex = 4;
        this.tabConsentInfoRFI.Text = "RFI\'s";
        this.tabConsentInfoRFI.UseVisualStyleBackColor = true;

タブ コントロール デザイナ コードの処理

        // 
        // tabProcessingRFI
        // 
        this.tabProcessingRFI.Location = new System.Drawing.Point(4, 36);
        this.tabProcessingRFI.Name = "tabProcessingRFI";
        this.tabProcessingRFI.Padding = new System.Windows.Forms.Padding(3);
        this.tabProcessingRFI.Size = new System.Drawing.Size(868, 465);
        this.tabProcessingRFI.TabIndex = 1;
        this.tabProcessingRFI.Text = "RFI";
        this.tabProcessingRFI.UseVisualStyleBackColor = true;
4

2 に答える 2

1

問題が見つかりました。同意デザイナー コードにある ListView は、同じように見える古いコントロールですが、現在は使用されていません。したがって、コントロールが元のタブに戻されると、コントロールはこのコントロールのバックグラウンドにあります。コントロールが削除されると (既に削除されていると思っていました)、コードは完全に機能しました。

正しい方向に導いてくれた LarsTech に感謝します。そして、そこに答えてください。

于 2012-09-23T23:49:47.803 に答える
0

オブジェクトがなくなったタブの Tab.Controls リストからオブジェクトを削除する必要があります。次のようにします。

tabProcessingRFI.Controls.Remove(gvwRFIs);
gvwRFIs.Parent = tabConsentInfoRFI
于 2012-09-23T23:15:02.930 に答える