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

わんくま同盟

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

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

ツリー一括表示

WindowsFormアプリケーションの画面遷移方法変更 /たく (24/03/02(Sat) 18:46) #102990
Re[1]: WindowsFormアプリケーションの画面遷移方法変更 /ぶなっぷ (24/03/04(Mon) 09:45) #102991
Re[1]: WindowsFormアプリケーションの画面遷移方法変更 /Azulean (24/03/05(Tue) 07:20) #102992
Re[1]: WindowsFormアプリケーションの画面遷移方法変更 /radian (24/03/07(Thu) 11:59) #102993


親記事 / ▼[ 102991 ] ▼[ 102992 ] ▼[ 102993 ]
■102990 / 親階層)  WindowsFormアプリケーションの画面遷移方法変更
□投稿者/ たく (1回)-(2024/03/02(Sat) 18:46:50)

分類:[.NET 全般] 

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

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

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

エラーが解消してうまくいくのであればそれで問題ないのですが、根本的に良い方法があればご教授いただければ幸いです。
[ □ Tree ] 返信 編集キー/

▲[ 102990 ] / 返信無し
■102991 / 1階層)  Re[1]: WindowsFormアプリケーションの画面遷移方法変更
□投稿者/ ぶなっぷ (2回)-(2024/03/04(Mon) 09:45:53)
私の場合、ユーザコントロールの追加は、
ソリューションエクスプローラから、プロジェクト選択して右マウスメニュー
追加 - ユーザコントロール でやっています。

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

[ 親 102990 / □ Tree ] 返信 編集キー/

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

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

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


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

まず、同じフォーム上にたくさんのコントロールを置くことが、動作を重くすること、開発上の管理しづらさを招くことにつながります。
ユーザーコントロールで逃げても重くなること自体は避けられませんが、開発上の管理しづらさは軽減するというところでしょう。
[ 親 102990 / □ Tree ] 返信 編集キー/

▲[ 102990 ] / 返信無し
■102993 / 1階層)  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をユーザーコントロールに変更して、画面遷移の方法を切り替えるのは得策ではないといった記載もあり、方法を模索しています。

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

[ 親 102990 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -