No.8ベストアンサー
- 回答日時:
ChangeFormの2番目の引数 oFormを oForm.Show()としてますが
これを oForm.Hide() としてください
当方の 投稿時の勘違いです … m(__)m
Imports System.Windows.Forms.Form
Module Module1
Public Sub ChangeForms(ByVal toForm As System.Windows.Forms.Form, ByVal oForm As System.Windows.Forms.Form)
oForm.Hide() ' ここをHideに変更
Select Case toForm.Name
Case "Child1", "Child2", "MainForm"
toForm.Show()
Case Else
MsgBox(toForm.Name & "が見つかりません")
oForm.Show()
End Select
End Sub
End Module
下記の様に記述しました。
エミュレータではモッサリ感がありましたが実機では問題なさそうです。
色々指導ありがとうございます。
助かりました。
Module Module1
Public Sub ChangeForms(ByVal toForm As System.Windows.Forms.Form, ByVal oForm As System.Windows.Forms.Form)
Select Case toForm.Name
Case "Child1", "Child2", "MainForm"
toForm.Show()
oForm.Hide() ' ここをHideに変更
Case Else
MsgBox(toForm.Name & "が見つかりません")
oForm.Show()
End Select
End Sub
End Module
No.7
- 回答日時:
Public Sub ChangeForms(ByVal toForm As System.Windows.Forms.Form, ByVal oForm As System.Windows.Forms.From)
の引数 oFormの型が間違っているのかも
System.Windows.Forms.Form としてみましょう
Form(フロム)では無くForm(フォーム)
回答ありがとうございます。
こんな単純な間違いに気付けず情けないです・・・
実行しましたがShow()だけしかないので裏では画面がSHOWされてますね。
×で画面を消すと他の画面が裏にありました。
全てで36画面ほどあるのですがこれだと全て裏でSHOWされてしまうと重たいくなりそうです。
HIDE(),CLOSE()などは必要ないのでしょうか?
試しに最初のoForm.Show()をHide()にしてみたところ一瞬デスクトップ画面が現れてしまいます。
Close()だとメイン画面が閉じて他の画面が表示されません。
何か方法ありませんか?
No.5
- 回答日時:
> error BC30002: 型 'System.Windows.Forms.From' が定義されていません
は 参照設定がされていないためでしょう
コードの冒頭で
Imports Sysytem.Windows.Forms.Form
と記述しましょう
下記のように記述しましたが相変わらず同じエラーです。
ほかに何か考えられますでしょうか。
Module1はソリューションの下にあるんですが・・・
よろしくお願いします。
Imports System.Windows.Forms.Form
Module Module1
Public Sub ChangeForms(ByVal toForm As System.Windows.Forms.Form, ByVal oForm As System.Windows.Forms.From)
oForm.Show()
Select Case toForm.Name
Case "Child1", "Child2", "MainForm"
toForm.Show()
Case Else
MsgBox(toForm.Name & "が見つかりません")
oForm.Show()
End Select
End Sub
End Module
No.4
- 回答日時:
ソリューション > 追加 > 新しい項目 > モジュール
で実行してみましょう
VB.NETはSubプロシージャやFunctionは ModuleまたはClassに属していないといけません
『コードファイル』で起こすと何も無いテンプレートが使われますのでご質問のような現象に見舞われます
コードファイルで行った場合は ファイルの冒頭で
Class クラス名[Enter] または Module モジュール名[Enter]などを実行しましょう
またこのようにして作成した場合 Classで行うなら
dim cls as new クラス名
cls.ChangeForm( 相手のフォーム, me )
といった具合にクラスの場合はインスタンスが必要になります
モジュールの場合は
Module1.ChangeForm( 相手のフォーム, me )
といった具合で Module1のインスタンス化は必要ありません
分かり易い説明ありがとうございます。
モジュールでChangeFormsを記述しビルド行いましたが、
「error BC30002: 型 'System.Windows.Forms.From' が定義されていません。」
になります。
特に波線にはなりませんが、ビルトするとエラーです。
ボタンクリックイベントで
Module1.ChangeForm( 相手のフォーム, me )
をお互いのFORMに記述してあります。
エラーの回避方法教えてください。
よろしくお願いします。
No.3
- 回答日時:
MainFromやModuleに切り替えようのPublicメソッドを準備してはいかがでしょう
MainFormやChild1などフォームのインスタンスは My.Formsに存在するのでそのまま クラス名がインスタンスとして機能します
Public Sub ChangeForms( toForm as System.Windows.Forms.Form, oForm as System.Windows.Forms.From)
oForm.Show()
Select Case toForm.Name
case "Child1", "Child2","MainForm"
toForm.Show()
case else
MsgBox toForm.Name & "が見つかりません"
oForm.Show()
End Select
End Sub
などを用意して
切り替えボタンのClickイベントで
MainForm.ChangeForm( Child1, me )
MainForm.ChangeForm( Child3, me )
MainForm.ChangeForm( MainForm, me )
などとしてみてはいかがでしょう ・・・
回答、誠にありがとうございます。
ChangeForms関数を
ソリューション⇒追加⇒新しい項目⇒コードファイル
に記述しましたが
「空間名前のステートメントが無効です」
となります。
Publicメソッドはどこに記述すればよいのでしょうか?
本当に初歩的な質問で申し訳ありません。
No.2
- 回答日時:
CompactFreamework だと OpenFormsは使えませんね
CompactFrameworkならば
MainForm->Child1の場合
Me.Hide()
Child1.Owner = Me
Child1.Show()
Child1->Child2
Me.Hide()
Child2.Owner = Me
Child2.Show()
Child2->Child1
Me.Hide()
Owner.Visible = true
Child1->MainForm
Me.Hide()
Owner.Visible = true
といった具合でよさそうです
この回答への補足
HIDE()も試してみましたがうまく行きませんでした。
何度か遷移しているとHIDE()したままになってwindowsのデスクトップが現れたりします・・・
全てで36画面ほどありClose()せずにすべてHIDE()になるのも現実的でないと思いましたが普通はどのような感じでしょうか?
回答ありがとうございます。
Child画面にMainFormに戻るボタンがあるので
Child画面同士に親子関係があるとおかしくなります。
例えば、
Child1⇒Child2
Child2⇒MainForm
となると親でない画面に遷移するのでおかしくなります。
Child1⇒Child2のあと必ずChild2⇒Child1なら単純ですが、
さらにChild3なども現れたら管理しきれません。
この様な場合どうすればいいのでしょうか。
親子関係なしに画面遷移する方法などありませんか?
ご教授お願い申し上げます。
No.1
- 回答日時:
子画面同士でもオーナは設定できますよ
Showメソッドの引数に Meを与えてやれば良いです
MainForm, Child1, Child2がある場合
MainForm -> Child1は
Me.Hide()
If Application.OpenForms("Child1") is Nothing then
Child1.Show( me )
Else
Application.OpenForms("Child1").visible = true
end if
同様にChild1->Child2の場合
Me.Hide()
If Application.OpenForms("Child2") is Nothing then
Child2.Show( me )
Else
Application.OpenForms("Child2").visible = true
end if
Child2->Child1へ戻るとき
Me.hide()
Owner.Visible = true
Child1->MainFormへ戻るとき
Me.hide()
Owner.Visible = true
といった具合で ・・・
早速の回答ありがとうございます。
記述してみたところ「OpenFormsがApplicationのメンバではありません」とエラーが出ます。
記載不足でしたがWindowsMoblie5.0の開発です。
.netConpactFreamwork2.0はインストールしてありますが問題ありますか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- ポイントサービス・マイル ポンタポイントの登録の仕方を教えてください 1 2023/01/19 22:56
- Mac OS macが液晶割れしたのでデータを保護したいです 2 2023/03/27 18:36
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- 企画・マーケティング ウェブ広告の無意味な「×」ボタンは規約や消費者保護関連の法律の違反には当たらないですか? 画面上にデ 2 2023/06/18 19:21
- Windows 10 パソコンが使えず困ってます!(Microsoftアカウントでログイン後、PINコードに関するエラー) 2 2023/03/17 19:09
- 化学 結晶場理論で真空状態から例えば8面体配位でt2gが安定化するのはなぜでしょうか? 1 2023/04/30 19:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASPで画面間のパラメタ受け渡し
-
オートマトンNFAからDFAへの変換
-
画面遷移が不正ですと表示されます
-
c# 文字列の最後から1文字削除...
-
Accessの画面更新を一時的に停...
-
DataGridViewのチェックボック...
-
formでのtarget="_blank"2回目
-
ブラウザの×(閉じる)ボタンの...
-
Page_Load時にボタンクリックイ...
-
VC++ MFC CListCtrlで、ボタン...
-
DVD-Rの「セッションを閉じる」...
-
ACCESS2010 WEBブラウザーコン...
-
aspxをhtmlに変換する方法について
-
ページングが大量発生する原因...
-
HTMLボタンの文字色を変え...
-
Media Player のスクリーンショ...
-
グリッドビューでのチェックボ...
-
今更、VBAでRPA、キーボード操...
-
青い枠のみのHTML
-
同じソリューション内の別のプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTTPリクエストヘッダーの設定...
-
画面遷移が不正ですと表示されます
-
ASPで画面間のパラメタ受け渡し
-
【ASP.NET】ページ遷移してもGr...
-
エクセルVBA 別のブックのユ...
-
VB.NET 画面遷移
-
スマホで、左右にスワイプして...
-
request.QueryStringについて
-
セッション変数への値の代入方...
-
ASP.NET による画面遷移で質問...
-
Spreadのデータを別画面に引き渡す
-
C#でテキストボックスとスクロ...
-
Request Header の追加
-
server.transferで別のサイトへ
-
違うサイトに移動した時にcooki...
-
googleカスタム検索を導入する...
-
Access2013 VBA 複数の画面の遷移
-
VBAで画面遷移時のパラメータに...
-
POSTだけして、ページの移動を...
-
ページ遷移方法について
おすすめ情報