2

TableLayoutPanelの行数をプログラムで変更しようとしています(4つ、場合によっては5つ、まれに6つにする必要があります)。

残念ながら、行数を変更してもRowStylesコレクションの同期が保たれないため、新しく追加された行の高さを設定できなくなります。次のテストコードは、この事実を示しています。

private void button1_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot remove rows
    tableLayoutPanel1.RowCount = 1;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

}

2番目のアサーションは失敗します。

private void button2_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot add rows
    tableLayoutPanel1.RowCount = 6;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);
}

2番目のアサーションは失敗します。

RowCountでは、のプロパティを設定するための適切なプログラム方法はTableLayoutPanel何ですか?

4

2 に答える 2

7

この問題は 2005 年に Microsoft に報告され、彼らはそれがバグであることを認めていますが、「まだここでオプションを評価しているところです。

TableLayoutPanel Rows と RowStyles は対応していません。

説明

tableLayoutPanel を作成し、(プログラムで行を追加するか、RowCount プロパティを設定して) 新しい行を作成すると、新しい RowStyles はコントロールに追加されません。さらに、新しい Row Styles を追加すると、行数は増えますが、同じ数にはなりません。2 つの Rows と 2 つの RowStyles から始めて、Rowcount を 4 に設定し、次に 2 つの RowStyles を (デザイン ビューで) 追加すると、 Rowcount は 6 に設定されています。RowStyles コレクションの順序を現在の RowCount と一致させる方が直感的です。

コメント

Microsoft によって 2005 年 10 月 24 日午後 6 時 7 分に投稿されました。

この問題は、Visual Studio の次のバージョンの計画を開始したときに再び発生しました。今後数か月にわたって、以前に延期されたフィードバックを再検討します。このプロセスへのご意見とご参加をお待ちしております。

Microsoft によって 2005 年 6 月 27 日午前 6 時 49 分に投稿されました。

Microsoft のサブステータスが「再現済み」になりました

このバグを報告していただきありがとうございます。この問題を再現することができ、現在調査中です。

VS2005 製品チームの Prabhu さん、ありがとうございます。

Microsoft によって 2005 年 6 月 27 日午後 5 時 55 分に投稿されました。

この問題を報告していただきありがとうございます。これは、設計時にうまく変換されないランタイム オブジェクト モデルの特性です。実行時、RowCount と ColCount は、autogrow に関しては minRowCount と minColCount を意味します。これは、行/列がサポート スタイルを必要としないためです。設計時には、それを単純化し、スタイルと行/列の間でほぼ 1:1 の対応を維持しようとします。この場合、設計上の実行時の動作が表示されます。この問題を追跡するバグが既にあり、ここでオプションを評価しています。Whidbey の改善に貢献していただき、重ねてお礼申し上げます。

Microsoft によって 2005 年 7 月 6 日午後 3 時 43 分に投稿されました。

この問題を報告していただきありがとうございます。これは、設計時に対処しないことを選択したランタイム オブジェクト モデルの特性です。行/列はサポートするスタイルを必要としないため、実行時に RowCount と ColCount は実際には自動拡張に関して minRowCount と minColCount を意味します。設計時には、通常、これを単純化し、スタイルと行/列の間でほぼ 1:1 の対応を維持しようとします。自動拡張を使用したテーブル レイアウト パネルの rowSpan または colSpan の場合、行/行数/行スタイルが同期していない状態になる可能性があります。これを避けるには、最初に必要な列/行を追加してから、コントロールの *span プロパティを設定します。ありがとう。

Microsoft によって 2005 年 10 月 24 日午後 6 時 7 分に投稿されました。

この問題は、Visual Studio の次のバージョンの計画を開始したときに再び発生しました。今後数か月にわたって、以前に延期されたフィードバックを再検討します。このプロセスへのご意見とご参加をお待ちしております。

-- Visual Studio チーム

于 2008-10-27T14:49:57.830 に答える
0

新しいものを作成してから、メソッドRowStyleを使用して追加しようとしましたか?tableLayoutPanel1.RowStyles.Add

于 2008-10-27T14:10:55.863 に答える