C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 重なったパネルの切り替え方


(過去ログ 112 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■66281 / inTopicNo.1)  重なったパネルの切り替え方
  
□投稿者/ ABOBA (1回)-(2013/04/12(Fri) 15:59:36)

分類:[VB.NET/VB2005 以降] 

チェックボックスを使って重なったパネルを切り替えたいのですが、うまく切り替えられません。
プロパティーとかをどこか設定するのでしょうか?


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.Panel1.Visible = True
Me.Panel2.Visible = False

End Sub

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If CheckBox1.Checked Then
Me.Panel1.Visible = False
Me.Panel2.Visible = True
Else
Me.Panel1.Visible = True
Me.Panel2.Visible = False
End If

End Sub

ご存知の方よろしくお願いします
引用返信 編集キー/
■66285 / inTopicNo.2)  Re[1]: 重なったパネルの切り替え方
□投稿者/ ムーミン (2回)-(2013/04/12(Fri) 16:56:58)
うまく切り替えられない、とありますが、具体的にはどうなるのでしょうか?
何も変わらない(常にどちらかが出たまま)ということでしょうか?
それとも例外(エラー)が出るのでしょうか?

ちなみに初期状態ではCheckBox1はどちらの状態でしょうか?
引用返信 編集キー/
■66287 / inTopicNo.3)  Re[2]: 重なったパネルの切り替え方
□投稿者/ ABOBA (2回)-(2013/04/12(Fri) 17:09:13)
No66285 (ムーミン さん) に返信

言葉足らずで申し訳ございません

> うまく切り替えられない、とありますが、具体的にはどうなるのでしょうか?
> 何も変わらない(常にどちらかが出たまま)ということでしょうか?

パネル1は表示されますが、パネル2は表示されません

> それとも例外(エラー)が出るのでしょうか?

エラーは出ません

> ちなみに初期状態ではCheckBox1はどちらの状態でしょうか?

初期状態では、パネル1が表示されます

よろしくお願いします
引用返信 編集キー/
■66288 / inTopicNo.4)  Re[3]: 重なったパネルの切り替え方
□投稿者/ pang2 (20回)-(2013/04/12(Fri) 17:23:39)
パネル1の中にパネル2が入っているとか。
引用返信 編集キー/
■66290 / inTopicNo.5)  Re[4]: 重なったパネルの切り替え方
□投稿者/ ABOBA (3回)-(2013/04/12(Fri) 17:59:13)
No66288 (pang2 さん) に返信
> パネル1の中にパネル2が入っているとか。

パネル1を動かすと、パネル2も一緒になってくっついてきます。
おそらく、パネル1の中にパネル2が入っているみたいですが、
何回やっても外に出せません。

最前面に移動とか、最背面に移動とかも使っても駄目でした。
他に外に出す方法がありますか?

よろしくお願いします
引用返信 編集キー/
■66293 / inTopicNo.6)  Re[5]: 重なったパネルの切り替え方
□投稿者/ Azulean (134回)-(2013/04/12(Fri) 23:28:28)
2013/04/12(Fri) 23:29:16 編集(投稿者)

デザイナのドラッグ操作で、ほぼ同じ座標に親子関係にならずに配置することは難しいです。

まったく別のところに離すことで親子関係を解除してから、Location プロパティを変更して、Panel1 と Panel2 を同じ座標にするとか、デザイナでは重ねずに Form のコンストラクタや Load イベントで Location を合わせるとかがお手軽でしょう。
引用返信 編集キー/
■66298 / inTopicNo.7)  Re[5]: 重なったパネルの切り替え方
□投稿者/ 魔界の仮面弁士 (193回)-(2013/04/13(Sat) 14:05:57)
No66290 (ABOBA さん) に返信
> 最前面に移動とか、最背面に移動とかも使っても駄目でした。
> 他に外に出す方法がありますか?

外に出すには、親コントロールから離れた位置にドラッグするか、もしくは
[ドキュメント アウトライン]ウィンドウで階層を変更してやれば可能です。

ただしいずれの方法を取るにしろ、作業の段階で座標が変化してしまいますので、
No66293 の Azulean さんが書かれているように、手動で Location を変更するという
作業が必要になってきます。


なお、2ページ程度の画面であれば、2枚のパネルを使うのが簡単で良いと思いますが、
今後、ページ数が増える場合には、デザインが煩雑になってくるかと思います。
その場合には、「TabControl/TabPage」を使うという手があります。TabControl なら、
各ページは、デザイン時に常に同じ座標に配置されるため、デザインは楽になります。

ただし、ページの表示/非表示切り替えができない(Remove/Addで代用はできる)とか、
画面デザインによってはタブボタンが邪魔になるといった制限もあるので、
そのままでは使いにくい場面もあります。

で、要件を満たしそうなコントロールが無いか探してみたところ、
 [Create a PanelManager]
 http://dotnetrix.co.uk/custom.htm#tip2
というコントロールを見つけました。これは「タブボタンの無い TabControl」です。

TabControl にあたる [PanelManager] と TabPage にあたる [ManagedPanel] で
構成されており、その使い方は TabControl の場合とほぼ一緒です。

    If Me.CheckBox1.Checked Then
        Me.PanelManager1.SelectedIndex = 0
    Else
        Me.PanelManager1.SelectedIndex = 1
    End If

なお、デザイナ画面では、
・デザイン時のページ画面切り替えは、PanelManager の SelectedPanel プロパティで行う。
・ページの追加や削除は、コントロール右上に表示されるタスクボタン(右向き三角)から行う。
のような操作となるようです。

引用返信 編集キー/
■66316 / inTopicNo.8)  Re[6]: 重なったパネルの切り替え方
□投稿者/ ABOBA (4回)-(2013/04/15(Mon) 10:19:27)
ムーミンさん、pang2さん、Azuleanさん、魔界の仮面弁士さん ありがとうございました。
皆さんの協力で無事、解決できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -