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

■35693 / 親記事)  .NET 4.5.2のVB.NETでのデスクトップ環境開発
  
□投稿者/ taros 一般人(1回)-(2026/02/15(Sun) 20:49:07)
  • アイコン環境/言語:[Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017] 
    分類:[.NET] 

    VB.NETでデスクトップ環境を作りたくて作ってて、GNOME2とMacOSX10.1のAquaを合わせたスタイルなのですが、VBを触ってまだ4から5時間程度で、ai(Gemini)にコードを書かせて作りました。ただ、容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。全くわからないので教えて下さい
イメージ
1771156147.zip
/19KB
マルチポストを報告
違反を報告
引用返信 削除キー/
■35694 / ResNo.1)  Re[1]: .NET 4.5.2のVB.NETでのデスクトップ環境開発
□投稿者/ 魔界の仮面弁士 大御所(1591回)-(2026/02/17(Tue) 10:09:44)
  • アイコンNo35693に返信(tarosさんの記事)
    > VB.NETでデスクトップ環境を作りたくて作ってて、

    ・起動すると、メインモニターが全画面表示で覆いつくされますが、マルチモニター環境の場合
     他の画面には何も表示されないようです。
     シングルモニター以外の環境も考慮する必要があるかもしれません。
     ちなみに Screen.AllScreens を使うことで、他の画面の座標情報を得られます。

    ・[設定]-[ショートカット]で OpenFileDialog2(ofdShortcut) が開きますが、
     ここでキャンセルを押したとしても、続けて OpenFileDialog1 が開いてしまいます。
     そもそも、2 連続でダイアログを表示させているのは何故ですか?
     ふたつのダイアログで、ファイルの種類ボックスの有無が異なっている点も謎ですし、
     いずれのタイトルも、単に "開く" としか書かれておらず、機能の意図が分かりにくいです。
     ショートカットアイコンの描画処理は良くできていますね。

    ・設定パネルを開いている最中にも、左上のアイコンを押せてしまいますね。
     設定パネルを閉じるまではアイコンを押せないようにするか、または
     アイコンを押した時点で設定パネルを閉じた方が良いのでは?


    > 容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。
    いや、コードを見せてもらわなければ、指摘できないですよ…。
    実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)
違反を報告
引用返信 削除キー/
■35695 / ResNo.2)  Re[2]: .NET 4.5.2のVB.NETでのデスクトップ環境開発
□投稿者/ 魔界の仮面弁士 大御所(1592回)-(2026/02/17(Tue) 10:23:20)
  • アイコンNo35693に返信(tarosさんの記事)
    > 環境/言語:[Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017] 
    そもそも.NET Framework 4.5.2のサポートは、2022年4月26日に終了しています。

    既存アプリのメンテナンスならともかく、
    新規開発で選択すべきフレームワークではありません。

    .NET Framework 4.8 や 4.8.1 (最低でも 4.6.2 以降) に切り替えるか、もしくは
    .NET Framework ではなく、その後継の .NET 8 などへの乗換をおすすめします。
    https://learn.microsoft.com/ja-jp/visualstudio/releases/2017/vs2017-compatibility-vs

    できれば VS2017 のままフレームワークバージョンを上げようとするのではなく、
    VS2026 の導入を検討してみてください。
    https://artitech.co.jp/post-10947/


    No35694に追記(魔界の仮面弁士の記事)
    > いや、コードを見せてもらわなければ、指摘できないですよ…。
    > 実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)

    「容量削減のためにウィンドウを共通化」「他のFormウィンドウでも流用したい」という
    元質問が、どういう意味なのか読み切れていないのですが、
    現状の実装がどうなっているのか、とりあえずざっくりとバイナリ解析。

    ・プロジェクト名に小数点やバージョン番号を含めない方が良いです。
     このコードだと、名前空間が「dotNET_Desktop_Panel_0._1._0」のように
     不自然なものになってしまっています。

    ・コントロールの名前は、コードを書き始める前に設定しておくべきです。
     後から変更するとイベントハンドラの名前と一致しなくなり、コードが分かりにくくなりがちです。

    ・Cllose ボタンは Close ボタンのスペルミスでしょうか? (Collapse の意図では無さそう)

    ・イベントハンドラの名前を見直しましょう。後から見たときに混乱の元です。
     Sub PictureBox2_Click は、PictureBox2 ではなく「startButton という名前の PictureBox」の Click に割り当てられています。
     Sub ProgressBar1_Click は、ProgressBar1 ではなく「pbRam という名前の ProgressBar」の Click に割り当てられています。
     Sub Button1_Click の処理は、どこからも呼び出されていないように見えます。
     Sub Button1_Click_1 は、Button1 の Click イベントに割り当てられています。
     Sub Label4_Click_1 は、Label4 の Click イベントに割り当てられていますが
     Sub Label4_Click は、Label4 ではなく lblRamUsage の Click になっています。
     Sub Panel2_Paint_1 は、Panel2 の Paint イベントに割り当てられていますが、
     Sub Panel2_Paint は、どこからも呼び出されいない状態です。


    ・空のイベントハンドラのうち、「誤生成したもの」は無駄なので削除しましょう。
     (今後実装予定だが、まだ処理を書いていないという段階ならば、そのまま残しても問題ありません)
     Sub Label4_Click は中身が空です。(lblRamUsage.Click から呼ばれる)
     Sub Form1_Load は中身が空です。(dotNETDesktopPanel.Load から呼ばれる)
     Sub lblVersion_Click は中身が空です。(lblVersion.Click から呼ばれる)
     Sub monthCalendar1_DateChanged も空です。(monthCalendar1.DataChanged)
     Sub netdeskPanelBottom_Paint も空。(netdeskPanelBottom.Paint)
     Sub OpenFileDialog2_FileOk も空。(ofdShortcut.FileOk)
     Sub Panel2_Paint も空です。(これはどこからも呼ばれていない)
     Sub panelTitleBar_Paint も空です。(panelTitleBar.Paint)
     Sub ProgressBar1_Click も空です。(pbRam.Click)
     Sub SelectExe_Click も空です。(SelectExe.Click)
     Sub ShortcutSettings_Paint も空。(ShortcutSettings.Paint)
     Sub startmenuPanel_Paint も空。(startmenuPanel.Paint)
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -