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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 >>
■87308  パネルとスプリッターを使った時の処理方法について
□投稿者/ 夜叉丸 -(2018/05/09(Wed) 18:27:21)

    分類:[.NET 全般] 

    2018/05/09(Wed) 18:54:28 編集(投稿者)

    フォームにパネル2つとスプリッター2を1つ置きます。

    フォームサイズを(546, 359)にして Padding を All=10 にすると
    ClientSize が(510, 300)になったので、
    panel1 を Size=(200, 300), Dock = Right
    splitter1 を Size=(10, 300), Dock = Right
    panel2 を を Size=(300, 300), Dock = Fill
    で追加しました。

    この状態で、フォームのサイズやスプリッターを移動しても
    panel1の幅200、panel2の幅300をキープしたかったので、
    以下のようにイベントを追加しました。

    private void panel1_Resize(object sender, EventArgs e)
    {
     if (panel1.Width < 200) panel1.Width = 200;
    }

    private void panel2_Resize(object sender, EventArgs e)
    {
     if (panel2.Width < 300) panel1.Width = this.ClientSize.Width - 300 - splitter1.Width;
    }

    フォームを大きくして、panel1の幅をSplitter1を使って広げた後、
    フォームの右端をドラッグしたままフォームの幅を狭くすると
    パネルの表示が壊れたり、Splitter1が消えたりします。
    壊れないようにするにはどうすればよいのでしょうか?
親記事 /過去ログ150より / 関連記事表示
削除チェック/

■87309  Re[1]: パネルとスプリッターを使った時の処理方法について
□投稿者/ WebSurfer -(2018/05/09(Wed) 18:48:17)
    No87308 (夜叉丸 さん) に返信

    何を作っているのでしょう? Windows Forms アプリ? WPF アプリ? ASP.NET Web Forms アプリ? その他?

    あなたの開発環境(OS, .NET, Visual Studio のバージョンなど)はなんですか?
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87310  Re[2]: パネルとスプリッターを使った時の処理方法について
□投稿者/ 夜叉丸 -(2018/05/09(Wed) 18:53:37)
    No87309 (WebSurfer さん) に返信
    > ■No87308 (夜叉丸 さん) に返信
    >
    > 何を作っているのでしょう? Windows Forms アプリ? WPF アプリ? ASP.NET Web Forms アプリ? その他?
    Windows Forms アプリです
    >
    > あなたの開発環境(OS, .NET, Visual Studio のバージョンなど)はなんですか?
    OS:Windows10
    .NET 4.5.1
    Visual Studio 2017
    です
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87311  Re[1]: パネルとスプリッターを使った時の処理方法について
□投稿者/ 猫まっしぐら -(2018/05/09(Wed) 20:52:10)
    No87308 (夜叉丸 さん) に返信
    ていうかSplitContainerじゃいけない理由は?
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87312  Re[2]: パネルとスプリッターを使った時の処理方法
□投稿者/ 夜叉丸 -(2018/05/10(Thu) 08:08:37)
    2018/05/10(Thu) 09:07:11 編集(投稿者)
    2018/05/10(Thu) 08:53:24 編集(投稿者)

    <pre><pre>■No87311 (猫まっしぐら さん) に返信
    > ■No87308 (夜叉丸 さん) に返信
    > ていうかSplitContainerじゃいけない理由は?

    やりたいことはパネルの最小表示できる範囲を固定できれば
    SplitContainerでも問題ないです。
    ただ、SplitContainerの使い方がわからないです。
    また、最終的には以下のようなパネル構成になります。
    太線はスプリットの線です。

    ┌────────────────────┐
    │┌────┐┃┌────┐┃┌────┐│
    ││    │┃│    │┃│┌──┐││
    │└────┘┃│    │┃│└──┘││
    │━━━━━━┃│    │┃│┌──┐││
    │┌────┐┃│    │┃│└──┘││
    ││    │┃└────┘┃└────┘│
    │└────┘┃━━━━━━━━━━━━━│
    │━━━━━━┃┌───────────┐│
    │┌────┐┃│           ││
    ││    │┃│           ││
    │└────┘┃└───────────┘│
    └────────────────────┘
    </pre></pre>
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87314  Re[3]: パネルとスプリッターを使った時の処理方法
□投稿者/ にゃるら -(2018/05/10(Thu) 09:39:29)
    SplitContainerは以下のプロパティで構成されます。
    Orientationプロパティで分割線を垂直か水平にするかを指定できます。
    SplitterDistanceプロパティで上(左)側から見ての分割線の位置を指定できます。


    期待されているパネル構成なら、

    1. まずSplitContainerを配置し、OrientationをHorizontalにする
    2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置
    3. 2で配置したSplitContainerのどちらかのパネルにSplitContainerを配置(これで左側の縦並び3つが完成)
    4. 1で配置したSplitContainerの右側のパネルにSplitContainerを配置
    5. 4で配置したSplitContainerの上側のパネルにSplitContainerを配置し、OrientationをHorizontalにする

    てな感じでいかがでしょうか?
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87316  Re[4]: パネルとスプリッターを使った時の処理方法
□投稿者/ 夜叉丸 -(2018/05/10(Thu) 12:31:35)
    No87314 (にゃるら さん) に返信

    ありがとうございます。
    SplitContainerを使ってやりたいことができました。

    SplitContainerを使わずにすることは不可能ということなのでしょうか?
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87319  Re[5]: パネルとスプリッターを使った時の処理方法
□投稿者/ 猫まっしぐら -(2018/05/10(Thu) 13:14:42)
    No87316 (夜叉丸 さん) に返信
    もちろんSplitterでも出来ますがコントロールを配置する順番とか色々めんどくさいのでSplitContainerで出来るならわざわざ苦労することもないかなと
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87323  Re[5]: パネルとスプリッターを使った時の処理方法
□投稿者/ 魔界の仮面弁士 -(2018/05/10(Thu) 17:24:23)
    No87308 (夜叉丸 さん) に返信
    > panel1の幅200、panel2の幅300をキープしたかったので、

    フォームサイズが (150, 150) になったりすると、最小幅を維持できないので、
    Form の MinimumSize もセットしておいた方がよいかと思います。


    現状だと、Form サイズが小さすぎた場合、
    panel1.Width = 200、panel2.Width = 0 になりえますし、
    それよりさらに狭くなると、panel1 に押しやられた splitter1 が
    マイナス座標に配置されることになりますよね。


    > パネルの表示が壊れたり、Splitter1が消えたりします。
    現象を再現できなかったので、状況が読みきれていません…。

    > フォームを大きくして、panel1の幅をSplitter1を使って広げた後、
    > フォームの右端をドラッグしたままフォームの幅を狭くすると
    具体的なサイズが分かると、こちらでも状況を追跡できるかも。

    (1) Form の Width を幾つまで広げたのか
    (2) panel1 の Width をどこまで広げたのか
    (3) その後、Form の Width をどこまで狭めたのか



    > 壊れないようにするにはどうすればよいのでしょうか?
    もしも再配置が追いついていないようであれば、フォームのリサイズが終了した後で、
    ResumeLayout を呼び出してみるのはどうでしょう。
    https://dobon.net/vb/dotnet/control/suspendlayout.html


    No87314 (にゃるら さん) に返信
    > 1. まずSplitContainerを配置し、OrientationをHorizontalにする
    > 2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置

    1 が Vertical で、2 が Horizontal では無いでしょうか。

    Horizontal (水平線) だと上下配置、
    Vertical (垂直線) が左右配置ですよね。



    No87316 (夜叉丸 さん) に返信
    > SplitContainerを使ってやりたいことができました。

    SplitContainer なら、Resize イベント等のコーディングも不要で、
     splitContainer1.SplitterWidth = 10
     splitContainer1.Panel1MinSize = 300
     splitContainer1.Panel2MinSize = 200
    をデザイン時に設定しておくだけで済むはずです。

    それに Splitter をドラッグする際の視覚効果も、最小サイズ以下にならないよう調整されるので、
    ユーザビリティ的にも画面設計効率的にも、SplitContainer の方がお奨めです。

    VS2005/VS2008 時代の MSDN を見てみると「SplitContainer コントロール (Windows フォーム)」の
    解説において、下記のように記されていますしね。

    》メモ:
    》 ツールボックスでは、以前のバージョンの Visual Studio で使用されていた Splitter コントロールが、
    》 このコントロールに置き換えられました。SplitContainer コントロールの優先度は、Splitter コントロールよりも
    》 かなり高くなります。Splitter クラスは、既存のアプリケーションとの互換性を確保するために、引き続き
    》 .NET Framework に含まれていますが、新しいプロジェクトに対しては、SplitContainer コントロールを
    》 使用することを強くお勧めします。

    ※ VS2017 では機械翻訳ヘルプになってしまったので分かり難い…。
    https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87325  Re[6]: パネルとスプリッターを使った時の処理方法
□投稿者/ 夜叉丸 -(2018/05/10(Thu) 18:39:06)
    2018/05/10(Thu) 18:39:22 編集(投稿者)

    No87323 (魔界の仮面弁士 さん) に返信
    > ■No87308 (夜叉丸 さん) に返信
    >>panel1の幅200、panel2の幅300をキープしたかったので、
    >
    > フォームサイズが (150, 150) になったりすると、最小幅を維持できないので、
    > Form の MinimumSize もセットしておいた方がよいかと思います。
    >
    >
    > 現状だと、Form サイズが小さすぎた場合、
    > panel1.Width = 200、panel2.Width = 0 になりえますし、
    > それよりさらに狭くなると、panel1 に押しやられた splitter1 が
    > マイナス座標に配置されることになりますよね。
    >
    MinimumSize はセットしています。

    > 具体的なサイズが分かると、こちらでも状況を追跡できるかも。
    >
    > (1) Form の Width を幾つまで広げたのか
    > (2) panel1 の Width をどこまで広げたのか
    > (3) その後、Form の Width をどこまで狭めたのか

    新規のフォームサイズを(526,339) で作成します。
    フォントはデフォルトの [MSUIGothic, 13pt] を使ってます。
    同時に MinimumSize = (526, 339) にします。

    パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Right にします。
    スプリッター(splitter1)を貼り付け サイズを(10, 300)で、Dock = Right にします。
    パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Fill にします。
    すると以下のようになります。
    ┌─────────────┐
    │┌───┐┌─┐┌───┐│
    ││   ││S ││   ││
    ││   ││pt││   ││
    ││Panel1││le││Panel2││
    ││   ││ir││   ││
    ││   ││t1││   ││
    │└───┘└─┘└───┘│
    └─────────────┘
    わかりやすく Panel1 の上に ListBox1 を、
    Panel2 の上に ListBox2 を貼り付けて、どちらも DOCK=Fillにしました。
    Panel1, Panel2 のリサイズイベントに以下のコードを追加します。

    private void panel1_Resize(object sender, EventArgs e)
    {
     if (panel1.Width < 200) panel1.Width = 200;
    }

    private void panel2_Resize(object sender, EventArgs e)
    {
     if (panel2.Width < 300) panel1.Width = this.ClientSize.Width - 300 - splitter1.Width;
    }

    スプリッターの移動だけなら問題なく動きます。
    ところが、フォームを広げ、panel2 の横幅を広げた状態にして
    ┌───────────────────┐
    │┌───┐┌─┐┌─────────┐│
    ││   ││S ││         ││
    ││   ││pt││         ││ form (526,339) →(1500,339)
    ││Panel1││le││   Panel2   ││ panel1 (200,300) →(1000,300)
    ││   ││ir││         ││ panel2 (526,339) →(474,300)
    ││   ││t1││         ││
    │└───┘└─┘└─────────┘│
    └───────────────────┘
    フォームの右端をドラッグしてフォームのサイズを素早く小さく
    (フォームの右端をドラッグしたままマウスを左にすばやく移動)します。
    ゆっくり動かすとならない、またはなりにくいです。
    本来 panel1 と panel2 の幅の合計は 1078-26=1052 なのに
    752+280=1032 になっている。その差 20 がグレー部分で表示されていると思います。
    というより画面キャプチャ―して調べるとグレー部分が20増えていました。
    ┌───────────────┐
    │┌───┐┌─┐┌───┐  │
    ││   ││S ││   │  │
    ││   ││pt││   │  │ form (1078,339)
    ││Panel1││le││Panel2│  │ panel1 (752,300)
    ││   ││ir││   │  │ panel2 (280,300)
    ││   ││t1││   │  │
    │└───┘└─┘└───┘  │
    └───────────────┘
                  ↑
                グレー(Control色)の部分が表示される。

    現状 ListBox が Panel2 の上に張り付けているので
    フォームの内側が真っ白になることもありました。

    >>壊れないようにするにはどうすればよいのでしょうか?
    > もしも再配置が追いついていないようであれば、フォームのリサイズが終了した後で、
    > ResumeLayout を呼び出してみるのはどうでしょう。
    > https://dobon.net/vb/dotnet/control/suspendlayout.html
    >
     ResumeLayout を呼びましたが表示は変わりません。
     UpDate, Refresh も表示は変わりません。
     処理途中で強制終了されているような感じです。

    >
    > SplitContainer なら、Resize イベント等のコーディングも不要で、
    >  splitContainer1.SplitterWidth = 10
    >  splitContainer1.Panel1MinSize = 300
    >  splitContainer1.Panel2MinSize = 200
    > をデザイン時に設定しておくだけで済むはずです。

    はい、設定しました。

    > それに Splitter をドラッグする際の視覚効果も、最小サイズ以下にならないよう調整されるので、
    > ユーザビリティ的にも画面設計効率的にも、SplitContainer の方がお奨めです。
    >
    > VS2005/VS2008 時代の MSDN を見てみると「SplitContainer コントロール (Windows フォーム)」の
    > 解説において、下記のように記されていますしね。
    >
    > 》メモ:
    > 》 ツールボックスでは、以前のバージョンの Visual Studio で使用されていた Splitter コントロールが、
    > 》 このコントロールに置き換えられました。SplitContainer コントロールの優先度は、Splitter コントロールよりも
    > 》 かなり高くなります。Splitter クラスは、既存のアプリケーションとの互換性を確保するために、引き続き
    > 》 .NET Framework に含まれていますが、新しいプロジェクトに対しては、SplitContainer コントロールを
    > 》 使用することを強くお勧めします。
    >
    > ※ VS2017 では機械翻訳ヘルプになってしまったので分かり難い…。
    > https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/splitcontainer-control-windows-forms

    今後は SplitContainer を使用するようにします。


記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87359  Re[7]: パネルとスプリッターを使った時の処理方法
□投稿者/ 魔界の仮面弁士 -(2018/05/15(Tue) 11:40:37)
    No87325 (夜叉丸 さん) に返信
    > 新規のフォームサイズを(526,339) で作成します。
    > 同時に MinimumSize = (526, 339) にします。
    今回は Padding を調整していない(ゼロのまま)のですね?

    当方環境だと、高さを 338 にしないと、内側の高さが 300 になりませんでしたが、
    今回は気にしないでおきます。(タイトルバーや枠線の高さは環境依存ですし)


    > フォントはデフォルトの [MSUIGothic, 13pt] を使ってます。
    日本語環境での既定のフォントは、
    [MS UI Gothic, 9pt]
    だと思いますよ。

    また、Form の AutoScaleMode が None 以外の場合、
    実行時のサイズが、デザイン時とは異なるサイズに
    自動調整される可能性があります。


    > パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Right にします。
    > スプリッター(splitter1)を貼り付け サイズを(10, 300)で、Dock = Right にします。
    > パネル(panel1)を貼り付け サイズを(200, 300)で、Dock = Fill にします。
    どちらも panel1 とかかれていますが、順番からすると、後者が panel2 ですよね。
    だとすると
    > すると以下のようになります。
    とはならないハズ。左右が逆になっているのでは無いでしょうか。


    > わかりやすく Panel1 の上に ListBox1 を、
    > Panel2 の上に ListBox2 を貼り付けて、どちらも DOCK=Fillにしました。
    IntegralHeight は True のままでしょうか。それとも False でしょうか。
    True の場合、ListBox の高さは項目の倍数単位に設定されるため、
    フォームサイズによっては、下部に余白が生まれる可能性があります。


    > スプリッターの移動だけなら問題なく動きます。
    > ところが、フォームを広げ、panel2 の横幅を広げた状態にして
    >  form (526,339) →(1500,339)
    >  panel1 (200,300) →(1000,300)
    >  panel2 (526,339) →(474,300)
    上記のリサイズは、デザイン時に行ったということでしょうか。

    座標的には、panel1 の方が幅が広く設定されていますが、
    図では右側 (Panel2) の方が広く描かれていますね。
    やはり、罫線描画された図の左右が逆になっているようです。


    > グレー(Control色)の部分が表示される。
    とりあえず対処療法として、
     private void Form1_ResizeEnd(object sender, EventArgs e)
     {
      PerformLayout();
     }
    あたりを仕込んでおくと、多少はマシになるかもしれません。



    > フォームの右端をドラッグしてフォームのサイズを素早く小さく
    > (フォームの右端をドラッグしたままマウスを左にすばやく移動)します。
    > ゆっくり動かすとならない、またはなりにくいです。

    幾らやっても再現させられなかったので、マウスの分解能スイッチと、
    コントロールパネルのポインター速度設定の両方を変更したところ
    こちらの環境でも再現させることができました。

    (1) ポインター速度:最速、マウス分解能:2000 ※こうすると再現しやすかった
    (2) ポインター速度:最速、マウス分解能:1000
    (3) ポインター速度:最速、マウス分解能:200
    (4) ポインター速度:中間、マウス分解能:2000
    (5) ポインター速度:中間、マウス分解能:1000 ※私は普段これで利用
    (6) ポインター速度:中間、マウス分解能:200
    (7) ポインター速度:最遅、マウス分解能:2000
    (8) ポインター速度:最遅、マウス分解能:1000
    (9) ポインター速度:最遅、マウス分解能:200
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87360  Re[8]: パネルとスプリッターを使った時の処理方法
□投稿者/ 夜叉丸 -(2018/05/15(Tue) 12:12:27)
    No87359 (魔界の仮面弁士 さん) に返信

    panel サイズの表示を間違っていたにも関わらず。
    詳細まで調べていただき本当にありがとうございました。



記事No.87308 のレス / END /過去ログ150より / 関連記事表示
削除チェック/

■87324  Re[6]: パネルとスプリッターを使った時の処理方法
□投稿者/ にゃるら -(2018/05/10(Thu) 18:10:37)
    No87323 (魔界の仮面弁士 さん) に返信

    > ■No87314 (にゃるら さん) に返信
    >>1. まずSplitContainerを配置し、OrientationをHorizontalにする
    >>2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置
    >
    > 1 が Vertical で、2 が Horizontal では無いでしょうか。
    >
    > Horizontal (水平線) だと上下配置、
    > Vertical (垂直線) が左右配置ですよね。


    うわ、間違ってました。ご指摘ありがとうございます!

    なので、念のために修正したものをば。

    1. まずSplitContainerを配置
    2. 1で配置したSplitContainerの左側のパネルにSplitContainerを配置し、OrientationをHorizontalにする
    3. 2で配置したSplitContainerのどちらかのパネルにSplitContainerを配置し、OrientationをHorizontalにする(これで左側の縦並び3つが完成)
    4. 1で配置したSplitContainerの右側のパネルにSplitContainerを配置し、OrientationをHorizontalにする
    5. 4で配置したSplitContainerの上側のパネルにSplitContainerを配置
記事No.87308 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87405  No87308 の続きになるのですが
□投稿者/ 夜叉丸 -(2018/05/18(Fri) 11:19:08)

    分類:[.NET 全般] 

    今まで Panel1(LEFT) と Panel2(Fill) があり,その間に Split1 がある場合に

    表示モードにより Panel1 を表示しない場合
    Panel1.Visible = Split1.Visible = false;

    表示する場合
    Panel1.Visible = Split1.Visible = false;
    Panel1.BringToFront();
    Split1.BringToFront();
    Panel2.BringToFront();

    にて処理していたのですが、

    PanelContainer を使用した場合には
    どのように処理すればよいのでしょうか?
親記事 /過去ログ150より / 関連記事表示
削除チェック/

■87407  Re[1]: No87308 の続きになるのですが
□投稿者/ 猫まっしぐら -(2018/05/18(Fri) 11:47:28)
    No87405 (夜叉丸 さん) に返信

    > PanelContainer を使用した場合には
    > どのように処理すればよいのでしょうか?

    SplitContainerじゃなくて?
    SplitContainerならPanel1Collapsed=True/False,Panel2Collapsed=True/False
    で制御しますが…
記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87414  Re[2]: No87308 の続きになるのですが
□投稿者/ 夜叉丸 -(2018/05/18(Fri) 16:12:37)
    No87407 (猫まっしぐら さん) に返信
    No87408 (魔界の仮面弁士 さん) に返信

    すみませんでした。
    PanelContainer ではなくて SplitContainer でした。

    Panel1Collapsed → 説明には「Panel1を縮小するかを決定します。」
    になていますが、考え方は Visible と同じでいいんですか?


記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87415  Re[3]: No87308 の続きになるのですが
□投稿者/ 猫まっしぐら -(2018/05/18(Fri) 16:48:30)
    No87414 (夜叉丸 さん) に返信

    > Panel1Collapsed → 説明には「Panel1を縮小するかを決定します。」
    > になていますが、考え方は Visible と同じでいいんですか?

    そうです
    縮小、というよりは折りたたむというイメージですかね
記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87408  Re[1]: No87308 の続きになるのですが
□投稿者/ 魔界の仮面弁士 -(2018/05/18(Fri) 11:58:10)
    No87405 (夜叉丸 さん) に返信
    > 今まで Panel1(LEFT) と Panel2(Fill) があり,その間に Split1 がある場合に

    こういう状態だったということでしょうか。

    Panel panel1, panel2;
    Splitter split1;
    public Form1()
    {
      InitializeComponent();
      Controls.Clear();
      split1 = new Splitter() { Dock = DockStyle.Left, BackColor = Color.HotPink };
      panel1 = new Panel() { Dock = DockStyle.Left, BackColor = Color.LightCyan };
      panel2 = new Panel() { Dock = DockStyle.Fill, BackColor = Color.LightGreen };
      Controls.AddRange(new Control[] { panel2, split1, panel1 });
      panel1.DoubleClick += (sender, e) => panel1.Visible = split1.Visible = false;
    }



    > PanelContainer を使用した場合には
    > どのように処理すればよいのでしょうか?

    PanelContainer というのは
    SplitContainer のことでしょうか。

    SplitContainer splitContainer1;
    public Form1()
    {
      InitializeComponent();
      Controls.Clear();
      splitContainer1 = new SplitContainer() { Dock = DockStyle.Fill, BackColor = Color.HotPink };
      splitContainer1.Panel1.BackColor = Color.LightCyan;
      splitContainer1.Panel2.BackColor = Color.LightGreen;
      Controls.Add(splitContainer1);
      splitContainer1.Panel1.DoubleClick += (sender, e) => splitContainer1.Panel1Collapsed = true;
    }
記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87553  Re[2]: No87308 の続きになるのですが
□投稿者/ 夜叉丸 -(2018/06/05(Tue) 14:21:34)
    ありがとうございました。
    
    フォームのリサイズ時に
    Panel1とPanel2が同時に高さが変わるのですが
    Panel2を現状の高さでPanel1の高さのみ変わるようにしたいのですが
    どのようにすればよいのでしょうか?
    
    ┌─────┐  以前であれば、
    │┌───┐│  Panel1.Dock = Fill
    ││Panel1││  Panel2.Dock = Bottom
    │└───┘│  にしておけばPanel2の高さは
    │┌───┐│  変更されませんでした。
    ││Panel2││
    │└───┘│
    └─────┘
    
記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87554  Re[3]: No87308 の続きになるのですが
□投稿者/ 猫まっしぐら -(2018/06/05(Tue) 15:10:22)
    No87553 (夜叉丸 さん) に返信

    SplitContainer.FixedPanelをPanel1にすればPanel1の高さ又は幅が、 Panel2にすればPanel2の高さ又は幅が固定されます
    (高さ又は幅のいずれになるかはSplitContainer.Orientationによります)

    その場合は.SplitContainer.IsSplitterFixed = Trueにすればユーザーによるスプリッターの移動を禁止出来ます

    またスプリッターを固定した時はSplitContainer.SplitterWidthを小さくする等して動かせないことを明示した方が良いかなと
記事No.87405 のレス /過去ログ150より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 >>

パスワード/

- Child Tree -