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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

4回答

13587閲覧

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

---stax---

総合スコア148

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

1グッド

0クリップ

投稿2018/02/21 23:59

編集2018/02/26 07:22

環境 visual studio2010

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

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

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

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

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

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

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

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

bochan2👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/22 00:12 編集

先に質問者さんが立てた多言語化のスレッドの話はどうなったのでしょう? きちんとフィードバックを返していただけませんか?
Zuishin

2018/02/22 00:13

書いていて自分でもわかりにくいと思ったなら読む方はもっとわかりにくいので回答者は減ります。意図通りになっているものとなっていないもののスクリーンショットを入れ、該当する部分のソースを掲載してください。
---stax---

2018/02/22 00:14

返答遅くなり申し訳ございません。先に自分の質問を優先してすみません。先の質問に対しての返答をさせていただきました。お手数おかけしますが確認宜しくお願い致します。
Zuishin

2018/02/22 00:28

ラベルの親ともう一つのラベルはどうなっていますか?
---stax---

2018/02/22 00:43

回答ありがとうございます。写真追加致しました。ラベルの親というのはラベルが乗っているパネルと解釈したのですが間違いなかったでしょうか?
Zuishin

2018/02/22 01:17

間違いありません。特に問題なさそうに見えるので自分でいろいろやってみないと原因はわかりません。こういう場合に一番ありがちなのはソースを変更してコンパイルしたものではなく古いものを配布したなどですが、そうではないんですよね? 直接的な原因は不明ですが、Panel ではなく TableLayoutPanel でどうにかならないでしょうか?
---stax---

2018/02/22 01:25

手順としては、labelの位置をドラッグして左にずらす→コンパイルする→アプリを発行する→発行したものを別PCに配布する、という流れなのですがこちらに関しては誤っている箇所はありますか?
Zuishin

2018/02/22 01:45

手順の確認はどこにどういう穴があるかわからないので、それよりも配布されたアプリでバージョンを確認できるようにして最新のものかどうか確かめるのが確実だと思います。しかしドラッグに関してはこの場合あまり関係ないと思われます。不具合の起こる環境でデバッグできないなら各コントロールとラベルの位置と大きさの変更を記録してどこで齟齬が生じているか確かめると何かわかるかもしれません。
---stax---

2018/02/26 01:16

回答ありがとうございます。ご指摘の通り、自分で変更を加えたアプリが配布できていませんでした。表記するのを忘れていましたが、今回対応を行ったアプリはClickOnceで発行しており、バージョンを変更しなくても変更の上書き自体は反映されているものだと勘違いしておりました。発行のバージョンを上げてアプリを発行すると①の現象は改善されました。丁寧に回答して頂きありがとうございました。
退会済みユーザー

退会済みユーザー

2018/02/26 02:46

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

2018/02/26 03:48

その通りです。①は当方のCliclOnce側の設定ミスです。申し訳ありません。
退会済みユーザー

退会済みユーザー

2018/02/26 04:09

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

回答4

0

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

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

投稿2018/02/22 03:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2018/02/22 02:53

masa_n

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/22 03:04

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

2018/02/26 01:41

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

2018/02/26 04:03

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

0

ベストアンサー

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

投稿2018/02/26 07:15

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

---stax---

2018/02/26 07:29

回答ありがとうございます。パネルに対して余白が少なくぎりぎりまでコントロール同士を離した状態の写真を追加いたしました。アウトラインは重ならないようにしたのですが写真の状態でも英語OS環境ではコンボボックスの表示がおかしくなります。コントロールぎりぎりの範囲では編集画面上は良くてもやはり影響があるのでしょうか?
Zuishin

2018/02/26 07:34

テキストボックスやコンボボックスの大きさは実行時の環境に左右されます。 パネルは開発時の大きさのままでテキストボックスだけ大きくなったのでしょう。 通常ならパネルの Anchor から Bottom を取り除き、AutoSize を true にすることで中身に合わせてパネルの大きさが変わるはずですので試してみてください。
---stax---

2018/02/27 07:14

回答ありがとうございます。 頂いた回答の通り、Anchor から Bottom を取り除き、AutoSize を true にして対応するとコンボボックスは正常に表示されるようになりました。 今回の現象の確認なのですが、画像[コントロールの範囲]からパネルの大きさがコントロールぎりぎりの範囲になっており、言語が英語になった際に文字の長さに比例してラベルも大きくなったことでコンボボックスが横?や範囲外にずれ込んだことが表示がうまくいかなかったという理解で間違いないでしょうか? 今回教えて頂いた対応方法なのですが、AutoSize を true にすると元々他のパネル間とのクリアランスもほとんど無かったので、パネル自体が大きくなることで他のパネルやコントロールに対して影響が出るのかと考えたのですが特に何も問題ありませんでした。 AutoSize は他のコントロールとの位置も判断しているのでしょうか? またAnchor から Bottom を取り除いたのは、下方向への固定を外すというのは分かるのですが、今回の正常な表示のどういう部分に効果を持っているのでしょうか? 重ねての質問申し訳ありませんが宜しくお願い致します
Zuishin

2018/02/27 07:22

言語というよりそれに伴って標準フォントが変わったことによりラベルとコンボボックスとフォームの大きさがフォントに合わせて自動的に変更されました。 AutoSize はあくまでもそのコントロールの大きさにだけ影響します。他のコントロールの位置や大きさには影響しません。パネルが大きくなることで他のコントロールに影響が出なかったことに関してはプロジェクトの詳細を見ていないので答えられません。 ただしフォームの大きさが変わるのでそれで辻褄が合った可能性はあります。 Anchor から Bottom を取り除くとパネルの高さがフォームの高さの影響を受けなくなります。したがって子コントロールのみによって高さが決定し、AutoSize が有効に働けるようになります。
---stax---

2018/02/27 07:49

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

2018/02/27 08:10

おおまかな状況から私の推測を書きました。 細かい部分まではこちらではわかりませんので色々と変えて確かめてみてください。 重要なことは、環境によってコントロールの大きさが変わるので Anchor や AutoSize を適切に設定しなければならないということです。 今回の場合はパネルの大きさ以上にラベルが大きくなったのでその部分を調節しました。 基準となるのはユーザーが設定するフォームの大きさと、フォントによって高さの決まるラベル・コンボボックスなどの入力コントロールです。その中間にあるパネルはそれらに合わせて大きさを変えてください。
---stax---

2018/02/28 00:03

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

0

こんにちは。

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

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

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

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

投稿2018/02/22 04:08

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/22 04:22

> 2010ではもしかするとNoneかも知れません Form の AutoScaleMode のことでしょうか? であれば、自分の環境の VS2010 Pro では Font でした。ご参考まで。(ちなみに、VS2008 Pro, VS2015 Community も Font でした)
Chironian

2018/02/22 04:48

SurferOnWwwさん。 フォローありがとうございます。デフォルトがFontなら外していそうですね。
---stax---

2018/02/26 02:09

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

退会済みユーザー

2018/02/26 02:45

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

2018/02/26 03:49

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問