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

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

C# と VB.NET の入門サイト

WindowsFormアプリケーションの画面遷移方法変更

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■102990 / inTopicNo.1)  WindowsFormアプリケーションの画面遷移方法変更
  
□投稿者/ たく (1回)-(2024/03/02(Sat) 18:46:50)

分類:[.NET 全般] 

開発環境:Visual Studio 2019
使用言語:VB.Net

○質問
現在実装済みのWindowsFormアプリケーションがすべてのメニューをFormで作成して画面遷移させています。
これをユーザーコントロールに変更にして画面遷移をVisibleで制御しようかと思ったのですが、ツールボックスからユーザーコントロールの追加で「コンポーネント”   ”を生成できませんでした。エラーメッセージ'System.ComponentModel.Win32Exception(0X800004005)):指定されたファイルが見つかりません。'」となり早速うまくいきませんでした。

いろいろ調べているとFormをユーザーコントロールに変更して、画面遷移の方法を切り替えるのは得策ではないといった記載もあり、方法を模索しています。

エラーが解消してうまくいくのであればそれで問題ないのですが、根本的に良い方法があればご教授いただければ幸いです。
引用返信 編集キー/
■102991 / inTopicNo.2)  Re[1]: WindowsFormアプリケーションの画面遷移方法変更
□投稿者/ ぶなっぷ (2回)-(2024/03/04(Mon) 09:45:53)
私の場合、ユーザコントロールの追加は、
ソリューションエクスプローラから、プロジェクト選択して右マウスメニュー
追加 - ユーザコントロール でやっています。

これで、うまくいきましたよ。

引用返信 編集キー/
■102992 / inTopicNo.3)  Re[1]: WindowsFormアプリケーションの画面遷移方法変更
□投稿者/ Azulean (1301回)-(2024/03/05(Tue) 07:20:45)
No102990 (たく さん) に返信
> これをユーザーコントロールに変更にして画面遷移をVisibleで制御しようかと思ったのですが、ツールボックスからユーザーコントロールの追加で「コンポーネント”   ”を生成できませんでした。エラーメッセージ'System.ComponentModel.Win32Exception(0X800004005)):指定されたファイルが見つかりません。'」となり早速うまくいきませんでした。

プロジェクトファイルの状態がおかしくなっているのかもしれませんね。
もし、参照設定の下にプロジェクト自身を参照するような設定になっているなら、一度消した方がいいかもしれません。

デザイナーでの配置にこだわらないなら、画面遷移時に New すれば良いと言えばそうですが、その辺りの勘所があるかどうかによります。


> いろいろ調べているとFormをユーザーコントロールに変更して、画面遷移の方法を切り替えるのは得策ではないといった記載もあり、方法を模索しています。

まず、同じフォーム上にたくさんのコントロールを置くことが、動作を重くすること、開発上の管理しづらさを招くことにつながります。
ユーザーコントロールで逃げても重くなること自体は避けられませんが、開発上の管理しづらさは軽減するというところでしょう。
引用返信 編集キー/
■102993 / inTopicNo.4)  Re[1]: WindowsFormアプリケーションの画面遷移方法変更
□投稿者/ radian (153回)-(2024/03/07(Thu) 11:59:43)
2024/03/07(Thu) 13:32:24 編集(投稿者)
No102990 (たく さん) に返信
> ○質問
> 現在実装済みのWindowsFormアプリケーションがすべてのメニューをFormで作成して画面遷移させています。
> これをユーザーコントロールに変更にして画面遷移をVisibleで制御しようかと思ったのですが、
> ツールボックスからユーザーコントロールの追加で「コンポーネント”   ”を生成できませんでした。
> エラーメッセージ'System.ComponentModel.Win32Exception(0X800004005)):指定されたファイルが見つかりません。'」となり早速うまくいきませんでした。

Visibleを切り替えるのではなく、都度作成したらどうでしょう。
以下は、あくまでイメージですがこんな感じで。
--------------------
Public Class Form1

    Private Sub OnButtonClick(sender As Object, e As EventArgs) Handles _
            Button1.Click,
            Button2.Click,
            Button3.Click

        'PanelにUserControlを追加
        Dim uc As UserControl = Nothing
        Select Case DirectCast(sender, Button).Name
            Case NameOf(Button1)
                uc = New UserControl1
            Case NameOf(Button2)
                uc = New UserControl2
            Case NameOf(Button3)
                uc = New UserControl3
            Case Else
                Return
        End Select
        PanelUC.Controls.Add(uc)
        uc.Dock = DockStyle.Fill

        '以前のUserControlがあれば削除
        If PanelUC.Controls.Count > 1 Then
            Dim ucOld = PanelUC.Controls(0)
            PanelUC.Controls.Remove(ucOld)
            ucOld.Dispose()
        End If

    End Sub

End Class
--------------------


> いろいろ調べているとFormをユーザーコントロールに変更して、画面遷移の方法を切り替えるのは得策ではないといった記載もあり、方法を模索しています。

これは聞いたことないのですが、根拠が知りたい気もするので
記載元を教えてください。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ