10

私はWindows c#に取り組んでいます。

まず、私の必要に応じて変更できないものは次のとおりです。

  1. のサイズTableLayoutPanelは固定です。
  2. 列の総数は固定されています。

ここで、すべての行に固定の高さを設定したいのですが、行を増やして、RowStyleプロパティをに設定するPercent100.0F、3 ~ 4 項目では正常に動作しますが、4 ~ 5 項目の後、1 行のコントロールが上のコントロールを上書きします。別の行。

私はこれをもっと検索しましたが、適切な答えを得ることができません。AutoSizePercent、 のAbsoluteプロパティも試しましたがRowStyle、機能していません。

では、何をどのように行うべきでしょうか?どうすればこれを達成できますか?

DataGridView最終的には、Windows C#と同じようにしたいと考えています。

前もって感謝します....

私はWinFormsに取り組んでいます...サンプルコードはこちらです..

int cnt = tableLayout.RowCount = myDataTable.Rows.Count;

tableLayout.Size = new System.Drawing.Size(555, 200);

for (int i = 1; i <= cnt; i++)
{

    Label lblSrNo = new Label();
    lblSrNo.Text = i.ToString(); 

    TextBox txt = new TextBox();
    txt.Text = ""; 
    txt.Size = new System.Drawing.Size(69, 20);

    tableLayout.Controls.Add(lblSrNo, 0, i - 1);
    tableLayout.Controls.Add(txt, 1, i - 1);
}

tableLayout.RowStyles.Clear();

foreach (RowStyle rs in tableLayout.RowStyles)                
    tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));

ラベルとテキスト ボックスは 4 ~ 5 の #of 行で正常に機能していますが、#of 行 (この場合は for ループの変数 cnt) が増加するたびに、行が互いに上書きされ、1 つのコントロールが別のコントロールに上書きされます...私はTableLayoutPanel コントロールをドラッグ アンド ドロップし、1 行と 2 列だけを手動で作成しました。

では、やり方を教えてください。

4

2 に答える 2

15

私はまだ tableLayoutPanels に慣れていませんが、コードの最後で、コレクションからすべての行スタイルをクリアしてから、foreach ループでそれらを反復しようとしていることに気付きました。

あなたはこれをしました:

tableLayout.RowStyles.Clear();   //now you have zero rowstyles

foreach (RowStyle rs in tableLayout.RowStyles)   //this will never execute
    tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));

代わりにこれを試してください。

TableLayoutRowStyleCollection styles =
    tableLayout.RowStyles;
foreach (RowStyle style in styles){
    // Set the row height to 20 pixels.
    style.SizeType = SizeType.Absolute;
    style.Height = 20;
}

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

編集: N 行を追加しても、反復可能な N 行スタイルが追加されないことに気付きました。何が起こっているのかと思うと、あなたは N 行を追加していますが、どれも行スタイルを持っていません。

行スタイルを Clear() してから、すでに行っているのと同じように N 行スタイルを追加することができると思います。

于 2014-03-20T17:01:46.820 に答える