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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

6597閲覧

SplitContainer パネル非表示・ロケーション変更

noi_p

総合スコア17

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/05/07 08:42

~環境~
Microsoft Visual Studio Professional 2017 Version 15.9.17
.NET Framework 4.6.1
Windowsフォームアプリケーション

~やりたいこと~
SplitContainerをプログラムから動的に変更したい。


イメージ説明

SpiltContainerコントロールを利用して、図1のように上・左下・右下の3分割の画面を作成しております。

ボタン押下などのイベントをきっかけに、同一フォームにおいて図1⇔図2の切替を行いたいのですが、
方法が分からないため不明のため質問させて頂きました。

イメージとしては、

SplitContainer1.Panel1.Visible = False SplitContainer2.Panel1.Visible = False SplitContainer2.Panel2.Location = New Point(10, 10)

ですが、SC1.P1とSP2.P1が非表示になるだけで、それ以外の効果はありませんでした。
※あたりまえだと思いますが。

また、図1⇔図2の切替(=コントロールを隠したい)がやりたいことなので、「Remove」では意図と反しますが、

Me.Controls.Remove(SplitContainer1.Panel1) Me.Controls.Remove(SplitContainer2.Panel1) SplitContainer2.Panel2.Location = New Point(10, 10)

この形では何の効果もありませんでした。削除すらされませんでした。
ちなみに、

Me.Controls.Remove(SplitContainer1)

としたところ、SplitContainer1とSplitContainer2の両方が削除された意味が分かりません。

物理的に無理なのであれば、Form1と別フォームを設けるのですが、
SC2.P2のイベントプログラムが重複するため、できれば同一フォームで処理させてたいと考えてます。

ご教示のほどよろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

図2のような状態にするには

VB

1SplitContainer1.Panel1Collapsed = True 2SplitContainer2.Panel1Collapsed = True

というコードでいいと思います。(戻すときは False にする)

詳細は

「SplitContainer コントロール (Windows フォーム)」
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms

「SplitContainer コントロールの概要 (Windows フォーム)」
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-overview-windows-forms

を確認してください。

投稿2020/05/07 10:10

KOZ6.0

総合スコア2707

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

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

noi_p

2020/05/08 00:21

アンサーありがとうございます。 簡単に解決しました。
guest

0

vbnet

1Me.Controls.Remove(SplitContainer1)

これはSplitContainer1自体が削除されるので当然無くなりますね。
0. SplitContainerのPanel1、Panel2にそれぞれ別にPanelを載せる
0. 図2の状態にしたいイベントで、Panel1 or Panel2に乗せたPanelをRemoveして取り外す
0. 処理2で取り外したPanelをフォームにControls.Addで追加し、PanelをBringToFrontで前面に表示

でいかがでしょう。

投稿2020/05/07 09:57

編集2020/05/07 09:59
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/05/07 10:49

KOZ6.0さんの方法の方が簡単そうなので、そちらを採用した方が良さそうです。
noi_p

2020/05/08 00:21

アンサーありがとうございます。 理屈は理解しました。 今回は、KOZ6.0さんの方法を採用させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問