.NET TIPS

Windowsフォーム上のコントロールの位置やサイズを固定するには?

デジタルアドバンテージ 一色 政彦
2005/03/11

 Visual Studio .NETのIDEのWindowsフォーム・デザイナでは、フォーム上に配置したコントロールを[→][↑]などの方向キーやマウス操作などによって簡単に移動できるため、操作を誤ってコントロールの位置を不用意に変更してしまうといったことがよく起こる。

 そこで本稿では、配置が完了したWindowsフォーム上のコントロールの位置とサイズを固定する方法を紹介する。

Windowsフォーム上のすべてのコントロールの位置とサイズを固定する方法

 Windowsフォーム上のコントロールの位置とサイズの固定は、IDEのメニュー・バーの[書式]−[コントロールのロック]を選択するか、フォーム上で右クリックすると表示されるコンテキスト・メニューから[コントロールのロック]を選択すればよい。

Windowsフォーム上のコントロールのロック
Windowsフォーム上のすべてのコントロールの位置とサイズを固定しているところ。
  メニュー・バーの[書式]−[コントロールのロック]を選択する。
  フォーム上で右クリックすると表示されるコンテキスト・メニューから[コントロールのロック]を選択する。
  ロックされたフォームやコントロールを選択すると、この画面例のような太めの枠でそのロック状態が表現される。

 以上でフォーム上のすべてのコントロール(フォームも含む)はロック(固定)される。これだけで、コントロールを選択して[→][↑]などの方向キーを押したり、マウス操作によって動かそうとしたりしても、コントロールの移動やサイズ変更はできなくなっている。コントロールのロックを解除する場合も、これと同様の手順を行えばよい。ちなみにC#でもVB.NETでもまったく同じ操作方法である。

 特にここで注意すべき点は、フォーム上のすべてのコントロールがロックされるということだ。一部のコントロールだけを指定してロックするには、IDEのWindowsフォーム・デザイナでコントロールを選択して、[プロパティ]ウィンドウでLockedプロパティの値を「True」に指定すればよい。

コントロールのロック状態の設定の格納場所について

 いったんVisual Studio .NETを閉じると、このロック状態は消えてしまうのでは? と思うかもしれない。しかしその心配は要らない。

 このロック状態はWindowsフォーム専用のリソース・ファイル(例えば「Form1.cs」ファイルなら「Form1.resx」というリソース・ファイル)に格納されているので、ロック状態はプロジェクトを再度開いたときにも維持される。

Windowsフォーム専用のリソース・ファイルに格納されたロック状態の設定
Windowsフォーム専用のリソース・ファイル(この例では「Form1.resx」)を、IDEのリソース・エディタで開いたところ(「Form1.resx」ファイルをダブルクリックすると自動的に開かれる)。なお、このリソース・ファイルはIDEのソリューション・エクスプローラ上では非表示となっている。これを表示するには、IDEのメニュー・バーから[プロジェクト]−[すべてのファイルを表示]を選択するか、[ソリューション エクスプローラ]の上部にある[すべてのファイルを表示]ボタンをクリックすればよい。

 上の画面を見れば分かるように、コントロールのロック状態は(「textBox1. Locked」「button1.Locked」「$this.Locked」などのような)「<コントロール名>.Locked」という名前のBool型データとして保存されている(「$this」はフォーム自身を表す)。ロック状態のときは<コントロール名>.Lockedの値が「True」で、そうでないときは「False」だ。デフォルトは当然「False」である。

 IDEのWindowsフォーム・デザイナはフォーム上のすべてのコントロールの<コントロール名>.Lockedの値を一括して「True」「False」に設定する仕様となっている。個別のコントロールをロックしたい場合には、[プロパティ]ウィンドウでそれぞれのコントロールのLockedプロパティを「True」に指定する必要がある。End of Article

カテゴリ:Windowsフォーム 処理対象:Windowsフォーム・デザイナ
 
この記事と関連性の高い別の.NET TIPS
コントロールに対するキー入力をフォームで処理するには?
基本フォームから継承された内容を派生フォームでカスタマイズするには?
Windowsフォーム上のすべてのコントロールを列挙するには?
非同期:awaitを含むコードをロックするには?(SemaphoreSlim編)
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

更新履歴
【2005/3/15】本記事の一部に以下のような誤りがありました。お詫びして訂正させていただきます。

一部のコントロールだけを指定してロックすることは(IDEのWindowsフォーム・デザイナの仕様上)残念ながらできないようだ。
一部のコントロールだけを指定してロックするには、IDEのWindowsフォーム・デザイナでコントロールを選択して、[プロパティ]ウィンドウでLockedプロパティの値を「True」に指定すればよい。

IDEのWindowsフォーム・デザイナはフォーム上のすべてのコントロールの<コントロール名>.Lockedの値を一括して「True」「False」に設定してしまうが、このリソース・エディタを使えば特定のコントロールのみをロックすることも可能だ。しかしそのようなコントロールのロック状態はIDEで想定されていないと思われるため、何らかの問題が生じないとも限らない。従って筆者は、そのような設定を行うことをお勧めしない。
IDEのWindowsフォーム・デザイナはフォーム上のすべてのコントロールの<コントロール名>.Lockedの値を一括して「True」「False」に設定する仕様となっている。個別のコントロールをロックしたい場合には、[プロパティ]ウィンドウでそれぞれのコントロールのLockedプロパティを「True」に指定する必要がある。


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間