質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.12%

C# Formアプリのコントロールの位置変更が反映されない、他のPCでレイアウトが崩れる場合の対応方法

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,316

---stax---

score 138

環境 visual studio2010

表題の件で質問お願いいたします。
現在アプリの多言語化を行っており、①画面右端に配置されているlabelコントロールを日本語→英語に変えると文字が長くなるため一部文字が切れてしまい表示されなくなっている部分や、②自分の開発環境では問題なく表示されているコンボボックスも別PCでアプリを立ち上げるとコンボボックスの上半分しか映っていないなどの現象が発生しています。

解決したい内容は
①に関しては、labelコントロール自体を右端ではなく、左にずらして対応しようとしたのですが、自分の環境でコントロールの位置を変更した状態で発行し、別PCでアプリを立ち上げると位置変更が反映されておらずどのような原因があるかわからず他に確認すべき項目があれば教えてください
プロパティのLockはfalseで、AnchorはTop,Rightでした

②に関しては画面上の文字のサイズを大きくして読みやすくする
上記のサイトを参考にし確認を行ってみましたが自分の環境と同じでした
自分の環境でのアプリの編集画面でも問題なく設定の問題なのかなと考え上記の確認を行いました
上記以外でも他に確認すべき項目があれば教えてください

分かりにくい質問で申し訳ありませんがアドバイス宜しくお願い致します

今回自分で修正したのlabelコントロールをドラッグして左側にずらしました
正しい場合
イメージ説明
イメージ説明

別PCでの表示(文字が切れている)
イメージ説明
labelプロパティ
イメージ説明

正しい場合:遅延累積labelのプロパティ
イメージ説明
labelが乗っているpanelのプロパティ
イメージ説明

②コンボボックスが半分しか映っていない現象
イメージ説明
コントロールの範囲
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2018/02/26 11:46

    先に質問者さんが立てた多言語化のスレッドの話も、ここのスレッドの少なくとも ① の話については「開発環境では対処できていたが、運用環境への Click Once での発行の問題で開発環境で行った対処が反映されてなかった」ということだったのでしょうか?

    キャンセル

  • ---stax---

    2018/02/26 12:48

    その通りです。①は当方のCliclOnce側の設定ミスです。申し訳ありません。

    キャンセル

  • SurferOnWww

    2018/02/26 13:09

    了解しました。返答いただきありがとうございました。② の問題はまだ未解決と理解しております。

    キャンセル

回答 4

+2

多言語対応をしているとのことですが、ラベルのキャプション文字列などはどのように多言語化されていますでしょうか。

コントロールのプロパティでカルチャを選択し、それぞれのキャプション文字列をTextプロパティに設定するというようなことをされている場合、コントロールのプロパティの値はカルチャごとのリソースに書き込まれます。
コントロールの配置に関するプロパティを操作したときに特定のカルチャが設定されていたというようなことはありませんでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/22 12:04

    多言語化の話は別スレッド→ https://teratail.com/questions/113669 で進行中(?)です。このスレッドの話は、多言語化と直接関係はなさそうで、単に長い文字列を Label に設定すると見切れてしまうということのようです。

    キャンセル

  • 2018/02/26 10:41

    回答ありがとうございます。文字列はリソースファイルとして管理しております。コントロールの配置に関してなのですが、言語が規定値と特定のカルチャでは若干位置が違っていました。多言語対応を行う際に日本語→英語では英語のほうが文字列が長くなり、コントロールの位置調整が必要な場合が発生すると思うのですが、コントロールの位置調整は多言語化したい言語にプロパティで変更して位置調整するものという理解でよろしいのでしょうか?

    キャンセル

  • 2018/02/26 13:03

    フォームデザイナで指定する場合、都度カルチャを変更しながら作業を行うことになりますが、カルチャの指定誤りは気を付けていても発生してしまいがちになります。
    Dock や AutoSize プロパティによって自動的に配置とサイズが調整されるように工夫して、文字列の長さの影響を受けにくいUIにしたほうが楽でしょうね。

    キャンセル

+2

ご自分でもググるなりして調べてみましたか? 自分が調べたら以下のような記事がヒットしましたが、こういう話ではないのですか?

How do I align my text in a label to the right side?
https://stackoverflow.com/questions/21218729/how-do-i-align-my-text-in-a-label-to-the-right-side

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+1

見るからに何かに隠れているかまたは親パネルが小さすぎますね。
ドキュメントアウトラインを確認してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/27 16:49

    丁寧な回答ありがとうございます。
    今回フォントがUI Gothicでのアプリを扱いましたが、英語OS環境にはUI Gothicが無いので違うフォントに自動で変わり、その変化に伴ってラベルやForm(画面?)自体が大きくなったがコンボボックスを載せているパネルはドキュメントアウトラインが狭く、AutoSizeもFalseのため、パネルは自動でサイズが変わらず、中のラベルが大きくなったことで表示が崩れた、ということですね。
    AnchorのBottomを外すことで高さ(下方向)の固定が無くなり、子コントロールの大きさに合わせて高さが変わり、AutoSize が下方向に自動でサイズを合わせるという理解で間違いないでしょうか

    キャンセル

  • 2018/02/27 17:10

    おおまかな状況から私の推測を書きました。
    細かい部分まではこちらではわかりませんので色々と変えて確かめてみてください。
    重要なことは、環境によってコントロールの大きさが変わるので Anchor や AutoSize を適切に設定しなければならないということです。
    今回の場合はパネルの大きさ以上にラベルが大きくなったのでその部分を調節しました。

    基準となるのはユーザーが設定するフォームの大きさと、フォントによって高さの決まるラベル・コンボボックスなどの入力コントロールです。その中間にあるパネルはそれらに合わせて大きさを変えてください。

    キャンセル

  • 2018/02/28 09:03

    回答ありがとうございます。すごく助かりました。コントロールのプロパティについてもっと勉強します。

    キャンセル

+1

こんにちは。

Windows 7をお使いでしたら外しているかも知れません。その時はご容赦を。

②自分の開発環境では問題なく表示されているコンボボックスも別PCでアプリを立ち上げるとコンボボックスの上半分しか映っていないなどの現象が発生しています。

この問題は、Windows Formsで良く発生する頭の痛い問題です。
Windows 10になって簡単に設定できる方の文字の大きさ(ディスプレイの設定の「テキスト、アプリ、その他の項目のサイズを変更する)の場合は、画像として拡大/縮小するのでレイアウトは崩れません。
しかし、上記の下にある「カスタム スケーリング」をクリックした先の設定を開発時と異なる値へ変更するとレイアウトが崩れます。

カスタムスケーリング100%でちょうどよいように調整後、例えばカスタムスケーリングを120%に設定変更すると、フォーム上の文字の大きさが20%(?)大きくなります。なのでそのままでは文字が切れます。
そこで、AutoScaleModeをFontに設定(VS 2017ではこれがデフォルトでしたが、2010ではもしかするとNoneかも知れません。)すると、文字の大きさに合わせてフォーム全体が拡大されます。
プログラムでコントロールの位置やサイズを設定しておらず、拡大後もフォームが画面内に収まるサイズの時は、そこそこうまいこと動きます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/26 11:09

    回答ありがとうございます。表記が抜けていましたが自身の環境はWindows7です。指摘頂いた箇所の設定を確認いたしましたがFontのままでした。複数のパネルが配置されている為、パネル同士が重なっているかとも考えましたがそのような箇所はなく、コントロールやパネルの位置調整を変更してみましたが現象は変わりませんでした。

    キャンセル

  • 2018/02/26 11:45

    先に質問者さんが立てた多言語化のスレッドの話も、ここのスレッドの少なくとも ① の話については「開発環境では対処できていたが、運用環境への Click Once での発行の問題で開発環境で行った対処が反映されてなかった」ということだったのでしょうか?

    キャンセル

  • 2018/02/26 12:49

    その通りです。①は当方のCliclOnce側の設定ミスです。申し訳ありません。②はまた別問題かと考えます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • C#に関する質問
  • C# Formアプリのコントロールの位置変更が反映されない、他のPCでレイアウトが崩れる場合の対応方法