tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルコントロールのフォントについて
記事No7463
投稿日: 2008/05/08(Thu) 13:18
投稿者皐月
こんにちは、いつもお世話になっております。WindowsXP,VB2005にて開発を行っています。

デザイン画面でテキストボックスやコンボボックスに文字を入れて、デバックを開始すると文字のフォントが変化するようになってしまいました。
デザインの画面ではちょうどよい大きさの文字であるのに対して、少し大きくなって文字がすべて表示されていない状態です。
ちょうど、コントロールの大きさを変更するようなプロパティをいじっていたので(AutoScaleMode,Fontはいじった覚えがあります)なにか他の余計なプロパティまで触ってしまったのかと思い以前のバージョンのプロパティと見比べて修正してみたのですが、元に戻らず・・・。

デザイン画面で編集したフォントの大きさのままで表示するためにはどうすればよいのでしょう?どなたかご存知の方ご教授お願いいたします。

[ツリー表示へ]
タイトルRe: コントロールのフォントについて
記事No7464
投稿日: 2008/05/08(Thu) 13:42
投稿者魔界の仮面弁士
> デバックを開始すると
一般的には「デバッグ」です。<Debug

> 以前のバージョンのプロパティと見比べて修正してみたのですが、元に戻らず・・・。
変更前後の Form1.designer.vb の内容を比較してみてください。

プロパティの中には、後から同じ値に設定したとしても、「未設定(初期値状態)」とは
別の状態として処理されてしまう物もありますので。

[ツリー表示へ]
タイトルRe^2: コントロールのフォントについて
記事No7468
投稿日: 2008/05/08(Thu) 16:53
投稿者皐月
魔界の仮面弁士さんこんにちは、いつもお世話になっております。

変更前後の Form1.designer.vb の内容を比較してみたところ、まったく同じ文章だったので、自分なりに考えてみたのですが・・・。

私の作成しているプログラムは英語OSに対応するためにセットアッププロジェクトを英語XP、英語VB2005で作成しています(プロジェクト作成と実際のプログラムは日本語版OS,日本語版VB2005で行っています)。どうやらそれが原因だったようです。

本当はすべて日本語の環境で開発、セットアッププロジェクトを作成したいのですが、日本語版だと必須コンポーネントをインストール時に文字がばけてしまうので><

英語版VB2005で作成したインストールファイルを日本語のOSに移し変えて、プログラムを起動するとフォントが変化してしまっているようです。英語版VB2005でしかインストールファイルを作成できない現状ではテキストファイルの幅を大きくとるしか解決策はなさそうですOTL

[ツリー表示へ]
タイトルRe^3: コントロールのフォントについて
記事No7469
投稿日: 2008/05/08(Thu) 17:53
投稿者魔界の仮面弁士
各コントロールの Font プロパティが、*.designer.vb 内で設定されているかどうかを
チェックしてみてください。特に指定がない場合は、親コントロール(Form等)の
フォントが引き継がれる事になると思います。

また、フォーム自体の既定のフォントは、日本語環境か英語環境かで
異なる可能性がありますので、こちらも併せてチェックしてみては如何でしょう。


使用されるフォントが異なると、同じポイント数であっても、
表示に必要な領域サイズは大きく異なりますので。

同じ日本語フォントであっても、行間がこんなに異なってしまうという…。
http://chirasharp.seesaa.net/image/meiryo.png


> テキストファイルの幅を大きくとるしか
意味が良く分かりません。ファイルの幅、というのは何のことでしょうか?

[ツリー表示へ]
タイトルRe^4: コントロールのフォントについて
記事No7471
投稿日: 2008/05/08(Thu) 19:05
投稿者皐月
魔界の仮面弁士さん、レスありがとうございます。

*.designer.vb内には

        Me.Label1.Font = Nothing

という風になっていました。
Nothingということは親コントロールのフォントを引き継ぐ・・・でいいのかな?
そこで、親コントロールの情報を書かれているソース(今回の場合はForm)を探してみたのですがFontについての情報がありません。
見ているところが違うのでしょうか?

        '
        'Form1
        '
        Me.AccessibleDescription = Nothing
        Me.AccessibleName = Nothing
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None
        resources.ApplyResources(Me, "$this")
        Me.BackgroundImage = Nothing
        Me.Controls.Add(Me.BtnExit)
        Me.Controls.Add(Me.BtnChang)
        Me.Controls.Add(Me.GroupBox3)
        Me.Controls.Add(Me.GroupBox2)
        Me.Controls.Add(Me.MenuStrip1)
        Me.HelpProvider1.SetHelpKeyword(Me, Nothing)
        Me.HelpProvider1.SetHelpNavigator(Me, CType(resources.GetObject("$this.HelpNavigator"), System.Windows.Forms.HelpNavigator))
        Me.HelpProvider1.SetHelpString(Me, Nothing)
        Me.Icon = Nothing
        Me.MainMenuStrip = Me.MenuStrip1
        Me.Name = "Form1"
        Me.HelpProvider1.SetShowHelp(Me, CType(resources.GetObject("$this.ShowHelp"), Boolean))
        Me.MenuStrip1.ResumeLayout(False)
        Me.MenuStrip1.PerformLayout()
        Me.GroupBox2.ResumeLayout(False)
        Me.GroupBox3.ResumeLayout(False)
        Me.GroupBox3.PerformLayout()
        Me.ResumeLayout(False)
        Me.PerformLayout()

>
> > テキストファイルの幅を大きくとるしか
> 意味が良く分かりません。ファイルの幅、というのは何のことでしょうか?

失礼しました><
テキストボックスの幅です。Fontが大きくなってしまうと設定した大きさに収まらないので
テキストボックスの幅を大きくしてFontに合わせるようにしなければいけないと考えたのです。

[ツリー表示へ]
タイトルRe^5: コントロールのフォントについて
記事No7472
投稿日: 2008/05/08(Thu) 19:24
投稿者魔界の仮面弁士
>         Me.Label1.Font = Nothing
> という風になっていました。
珍しいですね。その場合、Font を設定している行自体が無くなる事が多いのですけれども。

> Nothingということは親コントロールのフォントを引き継ぐ・・・でいいのかな?
そうなりますね。処理内容としては
 Me.Label1.ResetFont()
と同義になります。


> そこで、親コントロールの情報を書かれているソース(今回の場合はForm)を探してみたのですがFontについての情報がありません。
自身にも祖先コントロールにも Font 設定が無い場合には、既定のフォントとして、
System.Windows.Forms.Control.DefaultFont プロパティの値が利用されます。

これは、内部的には System.Drawing.SystemFonts.DefaultFont と同じ物で、
日本語環境では「MS UI Gothic/9 ポイント」を指し示し、
英語環境では、論理フォント「MS Shell Dlg」を意味します。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.defaultfont.aspx
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.defaultfont.aspx

MS Shell Dlg については、下記の「フォント」の項を参照してください。
http://msdn.microsoft.com/ja-jp/library/aa292134.aspx


> テキストボックスの幅を大きくしてFontに合わせるようにしなければいけないと考えたのです。
あらかじめ余裕を持たせるか、フォントから測定して動的に変更するなどの
対応が必要かも知れませんね。

[ツリー表示へ]
タイトルRe^6: コントロールのフォントについて
記事No7475
投稿日: 2008/05/09(Fri) 09:30
投稿者皐月
おはようございます。魔界の仮面弁士さんレスありがとうございます。

System.Windows.Forms.Control.DefaultFont プロパティより、デフォルトのフォントを日本語環境で取得してみたところ「MS UI Gothic/9 ポイント」となっていました。

規定のフォントが変化しているわけではなさそうなので、同じようにフォントが変化してしてしまったコントロールのフォントを取得(FormのLoadイベント時に取得しました)してみたところ「Microsoft Sans Serif/12 ポイント」となっていました。

デザイン画面上で配置したコントロールのFontは「MS Pゴシック, 12pt」となっているので設定が反映されていないようなのです。ちなみに、フォントが変化してしまう前のプログラムを使って同じことをしてみたところ、こちらは「MS Pゴシック, 12pt」となっていました。

「MS Pゴシック, 12pt」が存在しないフォントを表す書体名であるMS Shell Dlgに変化するのは

日本語PCから英語PCに移動させたとき
英語PCから日本語PCに移動させたとき

のようです。英語PCから日本語PCに移動させたときにFontを再認識させる方法はないのでしょうか?

[ツリー表示へ]
タイトルRe^7: コントロールのフォントについて
記事No7476
投稿日: 2008/05/09(Fri) 09:59
投稿者魔界の仮面弁士
既定のフォントに頼ったがゆえに、環境依存になってしまったという話ですよね。

であれば、最上位のコントロール(通常はフォーム)の Font プロパティを、
明示的に指定しておいては如何でしょう。日本語/英語どちらでも使えるフォントに。

あるいは、Language プロパティを用いた言語別設定の機能を使うとか。
http://www.microsoft.com/japan/msdn/thisweek/step7/globalization_vs/

[ツリー表示へ]
タイトルRe^8: コントロールのフォントについて
記事No7477
投稿日: 2008/05/09(Fri) 13:59
投稿者皐月
魔界の仮面弁士さんお世話になっております。

> あるいは、Language プロパティを用いた言語別設定の機能を使うとか。
> http://www.microsoft.com/japan/msdn/thisweek/step7/globalization_vs/

はい、Languageプロパティを使用してプログラムを作成しています。
ただ、セットアッププロジェクトを英語で作成しているため、「MS Pゴシック, 12pt」としていても、英語VB2005に入れると「Microsoft Sans Serif/12 ポイント」となってしまいます。(英語VB2005にMS Pゴシックがないためですよね?)

> であれば、最上位のコントロール(通常はフォーム)の Font プロパティを、
> 明示的に指定しておいては如何でしょう。日本語/英語どちらでも使えるフォントに。
>
こちらの方法を利用して

        Dim moji As String

        With System.Threading.Thread.CurrentThread.CurrentUICulture
            moji = Strings.Left(.Name, 2)
            If moji = "ja" Then
                Me.Font = New Font("MS Pゴシック", 12)
            Else
                Me.Font = New Font("Microsoft Sans Serif", 12)
            End If
        End With

としてみました。日本語で動作確認後、英語版VB2005でセットアッププロジェクトを作成して、日本語OSに戻しインストールしてみました。

が、フォントは大きなまま・・・OTL

移したプログラムをデバックしてみると以下のエラー文がでました。

「ソース ファイルがモジュールがビルドされたときのものと異なります。デバッガでこのファイルを使用しますか?」

どうやら、英語版で
                Me.Font = New Font("MS Pゴシック", 12)
の部分が認識できなかったご様子・・・。
英語VB2005に移したソースみてみると、文字化けしていました。
上記のソースコード以外にFontを指定する方法はないでしょうか?/step7/globalization_vs/

[ツリー表示へ]
タイトルRe^9: コントロールのフォントについて
記事No7480
投稿日: 2008/05/09(Fri) 15:44
投稿者魔界の仮面弁士
> 英語VB2005に移したソースみてみると、文字化けしていました。

ソースコードを、UTF-8 エンコーディングで保存していますか?

[ツリー表示へ]
タイトルRe^10: コントロールのフォントについて
記事No7484
投稿日: 2008/05/09(Fri) 16:45
投稿者皐月
魔界の仮面弁士さん、

> > 英語VB2005に移したソースみてみると、文字化けしていました。
>
> ソースコードを、UTF-8 エンコーディングで保存していますか?

ぅ、ぅーん、[ツール]-[オプション]から設定できる「フォントおよび色」の項目でしょうか?触ったことがないので初期設定のフォント設定になっているとおもわれます。

UTF-8を探してみましたが見つからず・・・。

[ツリー表示へ]
タイトルRe^11: コントロールのフォントについて
記事No7485
投稿日: 2008/05/09(Fri) 17:13
投稿者よねKEN
> > > 英語VB2005に移したソースみてみると、文字化けしていました。
> >
> > ソースコードを、UTF-8 エンコーディングで保存していますか?
>
> ぅ、ぅーん、[ツール]-[オプション]から設定できる「フォントおよび色」の項目でしょうか?触ったことがないので初期設定のフォント設定になっているとおもわれます。

そこではなく、ファイルの保存するときの文字コードの設定です。
今は手元にVB2005がなく、VC#2008でのメニュー位置ですので同じかわかりませんが、私の環境では[ファイル]-[保存オプションの詳細設定]にあります。

[ツリー表示へ]
タイトルRe^12: コントロールのフォントについて
記事No7486
投稿日: 2008/05/09(Fri) 18:42
投稿者皐月
よねKENさん、こんばんは。レスありがとうございます。

VB2005では[ファイル]-[名前をつけて保存]のダイアログボックスを開き、[保存] ボタンの右側の小さい四角形をクリックし、[エンコード付きで保存] をクリックしたら出てきました。これはちょっとわかりにくい(汗)VS2008では改善されているのですね。

エンコードが日本語(シフト JIS)になっていたので、Unicode(UTF-8シグネチャ(BOM)付き)を指定してファイルを保存して、英語VB2005でソースを開いたところ、今まで化けていた文字が「□□□」のように変化していました。

実行ファイルに変更して、日本語のOSにインストールしたところFontの大きさが元に戻ったものと、MS Shell Dlgのものがありました。

エンコードをチェックしなおしたり、セットアッププロジェクトを作成しなおしたりしてみたのですが、改善されないようです。上記の操作以外は特にした覚えがないのですが、なにか他に必要な操作があるのでしょうか?

[ツリー表示へ]
タイトルRe^13: コントロールのフォントについて
記事No7488
投稿日: 2008/05/09(Fri) 19:34
投稿者魔界の仮面弁士
> これはちょっとわかりにくい(汗)VS2008では改善されているのですね。
ん? いや、VB2005 でも同じはずですけれども。
http://msdn.microsoft.com/ja-jp/library/66d2abf2%28VS.80%29.aspx

もしかして、"Form1.vb" (ソースコード)の [ファイル] メニューではなく、
"Form1.vb [デザイン]" (デザイナ)の [ファイル] メニューを見ていませんか?


> 今まで化けていた文字が「□□□」のように変化していました。
英語版の方のエディタに、日本語対応フォントを指定してありますか?

[ツリー表示へ]
タイトルRe^14: コントロールのフォントについて
記事No7524
投稿日: 2008/05/14(Wed) 10:45
投稿者皐月
魔界の仮面弁士さんお返事ありがとうございます。

> > これはちょっとわかりにくい(汗)VS2008では改善されているのですね。
> ん? いや、VB2005 でも同じはずですけれども。
> http://msdn.microsoft.com/ja-jp/library/66d2abf2%28VS.80%29.aspx
>
> もしかして、"Form1.vb" (ソースコード)の [ファイル] メニューではなく、
> "Form1.vb [デザイン]" (デザイナ)の [ファイル] メニューを見ていませんか?

デフォルトで[ファイル]の中に入っていなかったので気付かなかったようです(^^;
[表示]-[ツールバー]-[ユーザー設定]より追加することができました。

> > 今まで化けていた文字が「□□□」のように変化していました。
> 英語版の方のエディタに、日本語対応フォントを指定してありますか?

[ControlPanel]-[Regional and language Options]を選択して、Languageタブの項目の中のInstall files for East Asian Languagesにチェックをつけて東アジア言語をインストールすることでしょうか?
してみたら、ある程度日本語化されましたが、元の化けていた状態には戻せなくなってしまいました><

[ツリー表示へ]