4

多くのテキスト ボックスを持つ Windows フォーム アプリケーションを作成しています。テキストボックスにラベルまたはキャプションを追加したいので、フォームに多くのラベルをドラッグして配置などを処理する必要はありません。これまでのところ、これを行う2つの方法が見つかりました。

  1. ラベルとテキスト ボックスを使用してユーザー コントロールを作成します。コントロールが再利用可能になり、さまざまなテキストサイズが入力されるため、入力されたテキストに応じて、コントロール、ラベル、およびテキストボックスのサイズを適切に設定するにはどうすればよいですか。テキストボックスのすべてのプロパティとイベントを同じままにする方法。

  2. 通常のテキスト ボックスを拡張し、ラベルまたはキャプションと呼ばれる文字列プロパティを追加し、このプロパティをテキスト ボックスの左側に表示します。これは CSS を使用した Web.UI で実行できることはわかっていますが、winform ではどのように実行できますか?

これらのいずれかを行う方法に関する提案はありますか? ありがとう。

4

2 に答える 2

5

ラベルとテキストボックスを含むUserControlを作成できます。フォームにユーザーコントロールを追加すると、その中のラベルとテキストボックスの両方が同時に追加されます。ラベルとテキストボックスのプロパティを公開して、デザイン時または実行時に値を割り当てることができます。

この方法を使用すると、ユーザーコントロールの倍数を追加して、レイアウトを標準化できます。テキストに基づいてコントロールのサイズを変更する限り、イベントをサブスクライブし、サイズを手動で変更する必要があります。

たとえばTextChanged、ラベルとテキストボックスのイベントをサブスクライブできます。イベントが発生したら、文字列のサイズを計算し、それに応じてコントロールの幅と位置を調整します。

于 2012-08-09T18:40:01.650 に答える
0

テキストボックスが多すぎる場合は、DataGridViewに切り替えることをお勧めします。GridView コンポーネントは、説明している内容に非常に適していますが、もちろん、グリッド レイアウトを受け入れる必要があります。

GridView の使用に伴う利点の 1 つは、実際の動作を見るまで理解するのが難しいものです。一度に作成される HWINDOW は 1 つだけです (編集モードの場合は 2 つ)。フォーム全体にラベルとテキスト ボックスを作成すると、それぞれが HWINDOW オブジェクトとしてオペレーティング システムに登録されます。これらの HWINDOW オブジェクトはすべて表示に時間がかかります。.NET 1.0 では、WinForms は非常に遅く、約 20 を超えるコントロールを含むダイアログは使用できませんでした。この点では .NET 2.0 の方がはるかに優れていますが、多数のコントロールがそれぞれ 1 つのデータを管理するのではなく、多数のデータを管理する 1 つのコントロールを使用することで、パフォーマンスが大幅に向上します。

ああ、別のオプションもあります。必要に応じて、PropertyGridを試すこともできます。ヘルプも表示され、要素ごとに複雑な編集コントロールを作成できるという利点があります。

于 2012-08-09T18:46:44.700 に答える