- PR -

panelを使用した際にコントロールが正しく機能しない

1
投稿者投稿内容
馬岱
常連さん
会議室デビュー日: 2007/12/05
投稿数: 21
お住まい・勤務地: 五丈原
投稿日時: 2008-04-15 15:37
どなたかご存知の方いらっしゃいましたらアドバイスいただけませんでしょうか。

*** 環境 ***
Visual Studio 2005
VB.NET
WindowsXP SP2

フォームの上部あるメニューから、選択された機能をフォームに表示するアプリを作っています。
フォームは1つだけで、表示させる機能はpanel毎にわけてvisible状態を切り替えて動作させようと思っているのですが、
レイアウトを揃えようとpanelをフォームの左上で重ねると何故かvisible=Trueのコード上を通過しても
FalseからTrueに変わらないという現象が起きています。
試しに大きくずらした状態で動作させてみたところ、正常にvisible=Trueになったので、これはpanelを重ねることが問題なのかと思うのですが(何故重ねると動作が違ってくるのか根本的なことはわかりませんが)、レイアウトとしてピタリと重ねなければならず、どうしたものかと悩んでおります。

解決策をご存知の方いらっしゃいませんでしょうか。
また、同様の動作で別の手法がありましたら教えていただけると幸いです。
宜しくお願い致します。
_________________
こえ部やめました(つд`)
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-15 16:01
軽く確認してみたのですが再現しません。ほかにも条件があるのでしょうか。

もしくはPanelを重ねようとデザイナ上でドラッグしたときに、Panelが入れ子になってしまったとか?
馬岱
常連さん
会議室デビュー日: 2007/12/05
投稿数: 21
お住まい・勤務地: 五丈原
投稿日時: 2008-04-15 17:13
rainさん、確認していただき有難う御座います。
私も通常は発生しないと思っていたので、今回当惑しております。
panelを重ねる際に、panelプロパティのLock=Trueにしているので入れ子にはならないだろう、
大丈夫だとたかをくくって居ましたがそちらも確認してみようと思います。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-15 22:25
引用:

馬岱さんの書き込み (2008-04-15 17:13) より:

panelを重ねる際に、panelプロパティのLock=Trueにしているので入れ子にはならないだろう、
大丈夫だとたかをくくって居ましたがそちらも確認してみようと思います。


Lockedプロパティ(のことですよね?)のデザイナに表示された説明を読むと、大きさと位置を固定にするだけのようです。
Locked=FalseのPanelを、マウスを使ってLocked=TrueのPanelに重ねてみたところ、入れ子になってしまいました。

マウスでドラッグせず、Locationプロパティを操作したほうが確実ですね。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-04-16 01:54
パネルをぴたりんこに重ねてというのはカレントのパネルは常に1つ、
という状態ですよね?

BringToFront でイケません?


馬岱
常連さん
会議室デビュー日: 2007/12/05
投稿数: 21
お住まい・勤務地: 五丈原
投稿日時: 2008-04-16 10:19
おはようございます。
rainさん、ぴあちゃんさん、レス有難う御座います。

>マウスを使ってLocked=TrueのPanelに重ねてみたところ、入れ子になってしまいました。
再確認しましたが、入れ子になっていましたorz
どうやらこれが決定的な原因だったようです。
お二方が提示して頂いた手法で正しく表示されることを確認しましたが、
今回はLocationを設定する方法を取りたいと思います。
アドバイス頂き本当に有難う御座いました。
こえ部に恥ずかしい歌と台詞があるので、鼻で笑ってやってくださいorz
1

スキルアップ/キャリアアップ(JOB@IT)