• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VisualC#での画面変更の方法)

VisualC#での画面変更の方法

このQ&Aのポイント
  • VisualC#での画面変更の方法についてご教示ください。
  • VisualStudioでフォームデザイナを使用して、異なる画面をひとつのWindowで処理する方法についてお知りになりたいです。
  • CUIベースでの経験があるため、VisualStudioに関する知識は最低限です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ウィンドウの一部を切り替えたい,ということを実現するのであれば, 切り替えたい内容をユーザーコントロールにして,Visibleを切り替えるのが簡単です。 Panelに貼り付けて同じこともできますが,デザイン画面がごちゃごちゃしてしまうため,お薦めしません。 機能をどう表示するのがベストかは,条件によって異なります。 ・ウィンドウの一部を切り替える ・タブを使う ・別ウィンドウをモーダルで表示 ・別ウィンドウをモードレスで表示 ・MDI 等々。

wisize
質問者

お礼

早速のお返事ありがとうございます。 ユーザーコントロールというものを利用していなかったので簡単に調べてみたのですが、 メイン画面に直接ラベルなりボタンなりを貼り付けてデザインするのではなく、 別途デザインしたもの全体を、ラベルなりと同じひとつの部品として、 必要なものをレイヤー状に重ねて、必要なもののみを表示する…… という解釈であっているでしょうか? Panelにはりつけるというのは、上記のものをひとつの部品とせずに、 同じフォームデザイン画面の中でグループ分けして表示・非表示を切り替えるため、 規模が大きくなるにつれて画面が煩雑としてきて取り扱いにくいということですよね? 基本的なことしか取り扱っていない書籍+必要な知識を散発的に検索しているので 全体的な理解が浅くてどうにも申し訳ありません。 皆様MSDNを読破とかされてるんでしょうか……CUIとは勝手が違いすぎて大変ですけれども頑張りたいと思います。 お手数ですが、よろしければ上記の理解で間違っていないか返答いただければ嬉しいです。 それでは、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

> ユーザーコントロールというものを利用していなかったので簡単に調べてみたのですが、 > メイン画面に直接ラベルなりボタンなりを貼り付けてデザインするのではなく、 > 別途デザインしたもの全体を、ラベルなりと同じひとつの部品として、 > 必要なものをレイヤー状に重ねて、必要なもののみを表示する…… > という解釈であっているでしょうか? あっています。 ユーザーコントロールは,複数のコントロールをまとめて新たな一つのコントロールにするものです。 # 似た言葉でカスタムコントロールというものがあります。既存のコントロールを継承して新たな機能を追加したものです。 > Panelにはりつけるというのは、上記のものをひとつの部品とせずに、 > 同じフォームデザイン画面の中でグループ分けして表示・非表示を切り替えるため、 > 規模が大きくなるにつれて画面が煩雑としてきて取り扱いにくいということですよね? はい。 ユーザーコントロールにしてもデザイン時は表示上重なってしまうのですが, ユーザーコントロールの中身については別途デザイン・実装できるので問題がありません。 ところが,パネルだとあくまでパネルの含まれるフォームやユーザーコントロールのデザインの一部なので, デザインするのに他のパネルが邪魔になります。 > XAMLとかにも興味はありますが、興味以上の労力を強いられそうなのが現状なので、 XAMLは ・WPF アプリケーション ・Silverlight アプリケーション ・Windows Phone アプリケーション ・Windows 8 メトロスタイルアプリケーション のUIに使う技術なので,Windows Formsアプリケーションの開発においては使いません。 # XAML自体はUI用の技術ではないのですけどね。 > もしその判断事態が誤りで、例えば描画系クラスがフォームデザイナより楽かもとかでしたら、 通常のアプリケーションでそういう状況になることはまずあり得ません。 そうなるようでしたら,WPFの利用を考慮することもお薦めします。

wisize
質問者

お礼

回答ありがとうございます。遅くなってしまい申し訳ありません。 解釈はおおよそあっていたようでほっとしております。 ユーザーコントロールとカスタムコントロールと混同していました(汗)。 気を回していただいてありがとうございます。後の混乱がひとつ消えました。 > Windows Formsアプリケーションの開発においては使いません 言葉足らずでしたね。 WPFアプリケーションも考慮しようかという意味で、そのあたりは理解しております。 ひとまずはUIを組む程度だから無理にWPFを使わなければいけない必然性はなさそうなので、平易な資料も少ない現状で無理はしない予定です。

全文を見る
すると、全ての回答が全文表示されます。
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

> 可能な限り楽をしたいという次第です。 プログラムをする人はそうであるべきだと思います。 ただ、学習してスキルを習得出来ないからではなく、 高度なスキルを用いて効率化・自動化を図るのが プログラマだからです。 プログラマは「手を抜く」目的の為なら「労力を 惜しまない」という一見矛盾した中に注力できる 人が向いていると思います。 > もしその判断事態が誤りで、例えば描画系クラスが > フォームデザイナより楽かもとかでしたら、 > よろしければそのあたりの詳細を教えていただければ助かります。 質問文でゲームを例えに出されていたので、 「30×30のドット絵を描く必要があったとき」 ・ボタンコントロールをきれいに30×30個並べて1個1個背景色を設定していく。 ・描画系のクラスで30×30の点を描く。 のどちらが楽かと言われれば明らかに後者です。 既製品は、お手軽ですが、本当に細かいところに こだわった時に対応し切れません。これに対し、 全てオーダーメイドで行なう技術は、要求が あるレベルを越えた時点で、圧倒的な力を発揮 する事があるということです。

wisize
質問者

お礼

回答ありがとうございます。遅くなってしまい申し訳ありません。 その辺りは身にしみて理解している……つもりです(汗)。 存外どの書籍も似たり寄ったりの内容が多いみたいなので、 当面はフォームデザイナに寄りかかりながら、ひとつずつ疑問を潰していく程度のつもりです。 他にもっと注力したいことは山とありますからね。 またどうしても解決できない点などあれば、どうぞよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

技術的にはフォームもコントロールの機能を持っているので、 フォームの上にフォームを乗せられます。 http://dobon.net/vb/dotnet/form/formwithinform.html MIDIは http://dobon.net/vb/dotnet/form/mdiapplication.html 描画系のクラスを使って自分でお絵かきする事もできます。 結局、ディスプレイの表示色を変更しているだけですから。 本当にボタンという部品が出来ているわけでなく、すべて 仮想の電子データしかないわけですので、それらしく錯覚 させられるならそれでもいいわけです。

wisize
質問者

お礼

返答ありがとうございます。 お返事おくれてしまい済みません。 ちょっと風邪を引いてしまいリンク先を精読とまではいかないのですが、面白そうではありますね。 落ち着いたら関連記事も含めていろいろ眺めてみたいと思います。 個人的なこととしましては、 描画系クラスでそれっぽく見せかけたりとかできるということは承知しているのですが、 GUI部分にあまり手間をかけたくないというか、正直書いててあまり面白みを覚えないので、 可能な限り楽をしたいという次第です。 XAMLとかにも興味はありますが、興味以上の労力を強いられそうなのが現状なので、 素直にフォームデザイナを活用できるようになるのが得策かなと判断しました。 もしその判断事態が誤りで、例えば描画系クラスがフォームデザイナより楽かもとかでしたら、 よろしければそのあたりの詳細を教えていただければ助かります。 それでは、推敲する余力がちょっとないので乱文気味申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 新しい画面にフォームを送信する

    ボタンがクリックされると、新しいWindowが開き、新しい画面では、元画面の入力情報を元にサーブレットで、処理を行い、結果を表示したいのですが、どういうふうにしたら、フォームを送信することができるでしょうか?

  • 画面のOnload

    main画面(A)からダイアログ(B)を表示します。 ダイアログ(B)のボタンを押すと、ダイアログ(B)をwindow.closeで消し、main画面(A)のインラインフレーム(C)を自動Loadする方法を教えてください。 window.parent・・・でやってみてはいるものの、「オブジェクトではサポートされていないメソッドです」というエラーがでます。

  • フォームの再起動について

    フォームの再起動について 一覧画面と登録処理を一つのフォームで行おうと考えています。 ボタンが押された時に登録処理を行い、一覧画面に反映させたいのですが その際にフォームの再起動が必要かと思います。 その場合、Application.Restart();としてしまうと、フォームが一度 閉じてから再表示となりますが、フォームを閉じずに一覧に反映させる 方法と言うのはあるのでしょうか? ご教授お願い致します。 Windows c# VisualStudio2010 ExpressEdition

  • Word2003新規作成で

    Word2003を新規作成しても 白紙の用紙が表示されません。 フォームフィールドの テキストボックスフォームフィールド チェックボックスフォームフィールドが 決まって表示されています。 これを消したいのですが、どのようにやればよろしいですか。 消して上書き保存にすると、名前をつけて保存ダイアログが表示 されます。 よろしくお願いします。

  • javascriptで画面を閉じる

    javascriptの画面を確認ダイアログでOKの時、閉じる処理の実装をどのようにするか考えています function back(){ if( confirm("入力内容は保存されませんがよろしいですか?")){ alert("OKが押されました"); window.close(); } else{ alert("キャンセルが押されました"); } } <div id="button"> <input type="button" name = "back" onClick="back()" value="戻る" /> </div> こんな感じに書いているのですが、[window.close();]が実行されません alertの部分はOKもキャンセルも呼ばれるのですが閉じる処理が呼ばれません 調べてwindow.close()で画面を閉じることができるというのは見つけたのですがそもそも使い方が 間違っているような気がします。 どの点が間違っているか、解決方法をお願いします。

  • 画面のフィールドの値を共通処理関数で読み書きしたい

    Access2013 VBAで、現在システムを開発しているところですが、 フォーム上の帳票のボタンを押した時の処理が、複数の画面で共通なので共通処理として使用したいと考えていますが、その時に、画面のフィールドの名前を変数に変えてどのように画面のフィールドに値をセットすればよいでしょうか。 よろしくお願いします。

  • 子画面から親画面をクローズしたい

    子画面から親画面をクローズすると確認メッセージが表示されます。 非表示の方法はありますか? 現在の処理内容:  親画面:   ボタン押下時 onclick="window.opener='main';window.open('URL');return false;"  子画面:   onload時 window.opener.close(); 確認ブラウザ:IE10、Chrome43  ※IE10では表示されるが、Chrome43では表示されない。

  • 子画面でもう一つ教えて下さい

    window.openを使用して子画面を開けた時に親画面にフォーカスが行かないようにしたいのですが、何か良い方法はないでしょうか? フォーカスが行かないというのは、ダイアログボックスを表示した時のように親画面をクリックしても子画面が前面に出ており、親画面でデータの入力ができない状態を考えています。 よろしくお願いします。

  • Access2000:[パラメータの入力]ダイアログを表示されないようにするには

    初心者です。よろしくお願いします。 フォームが完成したあとで、クエリ/テーブルから削除したいフィールドが発生してしまいました。 削除したいフィールドのコントロールをフォームから消した後に、クエリ/テーブルからフィールドを削除しました。 削除したあとにフォームを開いたところ、[パラメータの入力]ダイアログボックスが表示されてしまいました。(メッセージは"開こうとしているフォーム名" クエリ:"削除したフィールド名"です) このダイアログボックスが表示されないようにしたいのですが、どうすればよいでしょうか。 ちなみに削除したフィールドは単なるテキスト型で、選択クエリでも抽出条件等は設定していませんでした。 初歩的な質問ですみませんが、よろしくお願いします。

  • window.closeもしくはwindow.opener.closeで警告を表示させない方法

    宜しくお願い致します。 ログイン画面を作っております。 ログインフォームからID、パスワードでログインした際に、子ウィンドウを表示させます。その際に、残った親ウィンドウを子ウィンドウが開いた際に閉じたいのですが、window.closeもしくはwindow.opener.closeで閉じると警告ダイアログが表示されてしまいます。この警告ダイアログを表示させない方法はありますか?window.closeもしくはwindows.opener.closeで警告を表示させない様にする事が不可の場合、同じ動作が出来る関数はありますか?