DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Form内の領域をボタン押下毎に変更したい

環境/言語:[Windows 7, C#, WinForm]
分類:[.NET]

Form上に「毎日作業」「毎月作業」「時々作業」というボタンを配置しています。各ボタンを押すと、その隣の領域、サブフォームといったらいいのでしょうか、そこに各ボタンに紐付いたサブフォームを表示したいと思います。

やりたい事は1つの画面内で、ボタンを押す毎にその1画面内のある領域を変更したいとおもっています。どのように実現できるかお教え頂けませんでしょうか?

下記URLの画像のような事をしたいと思います。
http://fast-uploader.com/file/6951178261474/

宜しくお願い致します。
■No32211に返信(剛士さんの記事)
> 下記URLの画像のような事をしたいと思います。
> http://fast-uploader.com/file/6951178261474/
>
GroupBoxコントロールかPanelコントロールに必要なコントロールを張り付けておき、ボタンに応じてVisibleプロパティの変更で対応すれば近いことができます。
またはユーザーコントロールにしてしまうか。
アプリの仕様次第では、TabControlを使用するのもありだと思う。
■No32211に返信(剛士さんの記事)
> Form上に「毎日作業」「毎月作業」「時々作業」というボタンを配置しています。各ボタンを押すと、その隣の領域、サブフォームといったらいいのでしょうか、そこに各ボタンに紐付いたサブフォームを表示したいと思います。
ボタンが3つくらいなら固定でPanelを3つ配置して実行時にLocation、Sizeを合わせ
Visibleで切り替えるのがよいと思いますが、ボタンの数が実際にはたくさんあったり状況により数が変化するような場合はユーザーコントロールを作成し必要なときに動的に作成するようにした方がよいかもしれません。
■No32211に返信(剛士さんの記事)
> Form上に「毎日作業」「毎月作業」「時々作業」というボタンを配置しています。
> 各ボタンを押すと、その隣の領域、サブフォームといったらいいのでしょうか、そこに各ボタンに紐付いたサブフォームを表示したいと思います。

読んで字のごとく、フォーム内にサブフォームを表示するのであれば
http://dobon.net/vb/dotnet/form/formwithinform.html
を参照してみてください。
提示された画像を見た感じでは、切り替え部分にPanelを設置し、Panel上にフォームを追加する形にした方が良いですね。
また、サブフォーム側のプロパティを以下ように設定するとフォームっぽさが無くなって見やすくなります。
    f.WindowState = FormWindowState.Maximized
    f.FormBorderStyle = Windows.Forms.FormBorderStyle.None
また、サブフォームを使用する方法の場合は、切り替え時やメインフォームClose時等にサブフォームの最終処理(Dispose等)に注意が必要です。

ただ、上記の方法が本当に良い方法かどうかはわかりません。
というのは、切り替わる部分の使い方次第なのかな?と思います。

切り替わる部分の内容次第ではありますが、別案として
(1)他の方が仰っているPanelを使用し、Visibleにて表示を切り替える。
(2)ListViewコントロールを使用し、中身を設定し直す。
(3)WebBrowserコントロールを使用し、HTMLを生成してそのHTMLを表示する。
等でもいけそうですね。
aさん、shuさん
ご回答ありがとうございます。ユーザーコントロールというのは知りませんでしたので、勉強したいと思います。ボタン数は結構沢山作る予定だったので、コントロールが大変そうですね。今回はタブコントロールで対応して、ユーザーコントロールは勉強したいと思います!
anさん
ご回答ありがとうございます。サブフォームのやりかた拝見しました。勉強になります。
様々な方法をご提示頂きありがとうございます。まだまだ当方勉強不足でわからない事がありますが、
お教え頂いた方法を一つづつ勉強していきたいと思います。

皆様、本当にありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板