.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アプリケーションをWindows XPスタイルの外観にするには?
スレッド・セーフなコレクション・オブジェクトを作成するには?
各フォームの共通要素を基本フォームにまとめるには?
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」に指定する必要がある。

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH