• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# のテキストボックスデザインについて)

C# のテキストボックスデザインについて

このQ&Aのポイント
  • C#のテキストボックスデザインに関する質問です。質問者は、複数のテキストボックスを結合して並べたいが、フォームのスケーリングにより行間が変わってしまいデザインが崩れることを指摘しています。
  • 質問者は、http://www.grapecity.com/japan/special/multirow/ のように、複数のテキストボックスの行間を固定したいと考えています。
  • 質問者は、どなたか詳しい方にアドバイスを求めており、参考になるサイトや情報も教えてほしいとしています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

想定されているのは、レイアウトやフォントサイズが変わったとき、動的にControl間を隣接するように調整するということですよね。 プログラムで調整するなら、ロード時ではなくてリサイズイベントで行うようにしてください。 質問番号:6161003 http://okwave.jp/qa/q6161003.html と同じ質問ですよね。 一般的に、Formサイズを基準にして個々のコントロールの配置やサイズを計算すればいいのですが、混乱されているようですね。 この場合、TextBox Controlを基準にします。なぜなら、TextBoxは融通がきかなくて高さはフォントサイズに自動調整されます。強引に高さを変更しても元に戻ってしまうのです。 したがって、TextBoxを基準に隣接するように配置し、Labelの高さはTextBoxの高さに調整します。 --------------------------------------------------------------------------- 別のアプローチもご紹介します。 標準Controlを使って、レイアウトを動的に配置する方法(一例)です。 1.TableLayoutPanelコントロールをベースのコンテナとします。   TableLayoutPanel.Dock=Fill この場合、Form全体に張り付きます。   列=2,行=3にして、それぞれの比率は均等あるいは適当な設定をします。   CellBorderStyleプロパティをSingleにすると枠線を表示できます。 2.Label ControlとTextBox ControlをTableLayoutPanelのセルに当てはめます。 3.Label ControlのDockプロパティを同様にFillに設定します。   細部のプロパティ設定を行います。 4.TextBox ControlのAnchorプロパティを”Left, Right”に変更します。(中央に配置) ※TableLayoutPanelの詳細については、MSDNなどを参照してください。 ※TableLayoutPanelをForm内の他のコンテナにDockingするとそのコンテナサイズ内で自動調整されます。 TableLayoutPanelのセルには一つのControlしか貼り付けることができません。その場合は、多少面倒ですがTableLayoutPanelを入れ子にすることで結構複雑なレイアウトにも対応できます。 ●TableLayoutPanelをうまく活用すると、面倒なレイアウト調整プログラムを極力回避することができます。 補足 角丸の枠線は、標準Controlではできませんので対応するとすれば、市販コントロールを使うか独自に描画するコントロールを作成するしかありません。(解説は省略) [プログラミングの家庭教師]

abuhiro
質問者

お礼

いろいろアドバイスありがとうございます。 TableLayoutPanelは一度試したのですが、入れ子にするのは考えていませんでした。 一度試してみます。 >>角丸の枠線の、標独自に描画するコントロールを作成。 の方法が出来れば知りたいです。 もし、お時間があれば、教えていただけないでしょうか? この辺りの情報が載っているサイトを、発見できず、苦しんでいます。 ぜひ、教えてほしいです。 よろしくお願いいたします。m(__)m

関連するQ&A