2

Vista では Segoe UI 9 ポイント、Windows XP などでは Tahoma 8 ポイントを使用したいと考えています。(実際には、私はどちらも Segoe UI で解決しますが、私のユーザーはおそらくそれをインストールしていません。) しかし、これらはまったく異なるものであり、私のフォームのレイアウトを台無しにしてしまいます。では・・・何か良い対処法はないでしょうか?

例: がありLabel、中央に空白があり、そこにNumericUpDownコントロールを配置します。Segoe UI を使用するNumericUpDownと、Tahoma を使用した場合と比較して、余白の左側に約 5 ピクセル程度です。これは苦痛です。ここで何をすべきかわかりません。

最も具体的には、私の質問は次のとおりです。s Label(またはCheckBoxes など) の空白スペースの真ん中にコントロールを配置するにはどうすればよいですか? 一般的に: Windows フォームでさまざまなフォントを処理する良い方法はありますか?

編集:人々が質問を理解したとは思いません。OS に基づいてフォントを変更する方法を知ってそうすることで発生するレイアウトの問題に対処する方法がわかりません。

ajryan への返信、quick_dry : わかりました。質問はわかりました。この問題を解決するためのより良い方法をさらに調査することに興味がありますが、私は MeasureString が機能する可能性があると思います。

コントロールの分割に関する問題は、たとえば a で最も明白CheckBoxです。そこで、ユーザーが CheckBox の「後半」(別のLabelコントロールになると思います) をクリックしても、CheckBox状態は変わりません。

4

4 に答える 4

3

私は、単一行のインライン コントロールに TableLayoutPanel を使用することに賛成です。

私は通常、デザイナーで各列と最初の行を AutoSize に設定し、各子コントロールの Dock プロパティを Fill に設定します。これにより、水平レイアウトが適切に表示されます。ラベル/テキスト ボックス間でテキストを整列させるには、TextAlign プロパティを MiddleLeft に設定します。

テキストが次の行に続く場合、簡単な解決策はありません。Graphics.MeasureString/TextRenderer.MeasureText といくつかの派手なラッピングロジックを使用するのが最善の策です:(

于 2008-09-01T12:25:29.110 に答える
1

まず、システム ライブラリのOperatingSystem.Platformプロパティを使用して、使用している Windows のバージョンを確認できます。

次に、フォント設定をリソース ファイルに入れ、特定の条件 (オペレーティング システムのバージョンなど) に応じて使用するリソース ファイルを決定することができます。

個人的には、ユーザーに使用させたいフォントではなく、好みのフォントをユーザーが決定できるようにするとよいと思います

最後に、WPF を検討することをお勧めします。これは、 WPFが解決するように設計された問題空間の 1 つだからです。

于 2008-09-01T00:45:37.137 に答える
1

コントロールの配置の問題ですか?つまり、フォント X と Y が OS A と B で動作し、これらのシステムで使用しているテキストに必要なレイアウトを与えることを知っていますか?

MeasureString メソッドは、特定のフォントに縛られないようにレイアウトを作成するのに役立つ場合があります。

float textWidth = graphics.MeasureString(someString, someFont).Width;

(テキスト配置の変更は機能しますか?私も問題を誤解している可能性があります)

于 2008-09-01T02:02:07.907 に答える
1

あるコントロールを別のコントロール内にレイアウトする必要があるのは奇妙です。上流の問題を間違って解決している可能性があります。Windows フォームの TableLayout パネルに依存して、ラベルを上下に 2 つのラベルに分割することはできますか?

フォント サイズに基づいて配置することが不可欠な場合は、Graphics.MeasureString ("String before updown", myLabel.Font)を使用できます。

フォントに依存するコントロールの配置を求めている場合は、おそらく質問のタイトルを変更する必要があります。


[編集] ラベルの「後半」部分のクリック イベントを処理し、そのイベントでチェックボックスの状態を変更できます。全体がハックのように見えます。この奇妙なコントロール レイアウトによって解決される問題は何ですか? なぜラベルの途中でアップダウンが必要なのですか?

于 2008-09-01T02:08:47.173 に答える