- ベストアンサー
VB.Netで複数のフォームを制御する方法
- VB.Netで複数のフォームを制御する方法について教えてください。
- Form1上のButton1を押すと、Form2とForm3を呼び出してForm1を制御できないようにしたいです。
- Form2とForm3だけを制御可能にし、Form1を待機させる方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 2つのメッセージボックスを表示している間、コードを待機させる方法
2つのメッセージボックスを表示している間、コードを待機させる方法 今晩は,いつも勉強させていただいております。 質問させていただきます。どうぞよろしくお願いいたします。 開発環境はXP+VB2008になります。 Form_MsgBox1とForm_MsgBox2上での操作が完了するまで Form1のコードを中断したいのですが、そのような事って 可能なのでございましょうか。。。?? そもそも中断させる方法が分からなかったのですが、 先の質問でご親切にShowDialogをお教えいただけましたので 【Form1】 Private Sub Button_Click : Dim f As New Form_MsgBox1 If f.ShowDialog(Me) = DialogResult.OK Then Else Exit Sub End If : End Sub 【Form_MsgBox1】 Private Sub Form_MsgBox1_Load : Dim f As New Form_MsgBox2 f.Show() : End Sub といたしましたところ、Form_MsgBox2の操作が できなくなってしまいました。。 (それ以外は全部大丈夫でございます) Form_MsgBox1とForm_MsgBox2を交互に操作している間、 Form1だけ待機させて操作できなければよいのですが。。 検索いたしておりますと、複数のShowDialogが可能か どうかといったQ&Aがいくつか見つかるのですが、 いまいちよく分かりませんでしたorz 何かよさそうな方法がひらめかれるようでございましたら、 是非ともアドバイスいただきたくお願い申し上げます。 もしお詳しい方がいらっしゃいましたら,どうぞよろしく お願いいたします。
- ベストアンサー
- Visual Basic
- vb2010で2つのフォームを同時制御
vb2010でプロジェクトを作成しています。 Form1がメインで、Form2を観客用に用意しています。 Form1のButton1をクリックすると、Form2のPictureBox1に画像を表示させたく、 下のようなプログラムを書いたのですが、Form2に画像が表示されないばかりか、 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーまではかれてしまいます。このエラーの意味もわからないほど、素人なのでわかる方どうかよろしくお願いします。 ------------------------------------------------------------------------------ Private Sub Form1_Load Dim g As New Form2 g.Show() ------------------------------------------------------------------------------ Private Sub Button1_Click Form2.PictureBox1.Image = Image.FromFile("C/xxxxxxx.png") Form2.Refresh() ------------------------------------------------------------------------------
- ベストアンサー
- Visual Basic
- [VB6] フォームを閉じる方法について
お世話になります。 VB6で別フォームを起動する際の親フォームの閉じ方について 質問させてください。 呼び出し元フォームからShowメソッドで別フォームを起動すると、 呼び出し先のフォームでマウスのカーソルが砂時計表示になってしまいます。 (呼び出し元のフォームはUnload Meで閉じています。) [Form1の処理] Private Sub Button1_Click() Form2.Show Unload Me End Sub ※Form1は呼び出し元。Form2は呼び出し先。 原因について、どなたかご存知の方がいらっしゃいましたら、 ご教授願えますか?
- ベストアンサー
- Visual Basic
- Form1.vbをイベントなしで動作させるには?
VB2005初心者で困っています。 Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています) これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの Public Class Form1 Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click Dim g As Graphics ・・・・ を変更して、 Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load Me.Show() Dim g As Graphics ・・・・ と、しましたが、一瞬Graphは表示しますが、すぐに消えます。 また、罫線はまったく表示しません。 Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?
- 締切済み
- Visual Basic
- VB2010 フォームのリロード
今までVB6.0でプログラミングをしていた者で、最近VB2010に開発環境を変えました。さっそくソフトを開発しているのですが、フォームのリロードが必要なところがあったためそこのプログラムをネットなどで参考にして書いてみたのですがどうしてもエラーがでます。 今までVB6.0ではその部分を Private Sub Command1_Click() Set Form1 = Nothing Call Unload(Me) Form1.Show End Sub と、記載していました。これをVB2010のコードに書き換えるとどのようになるのでしょうか。 ご回答よろしくお願いいたします。
- 締切済み
- Visual Basic
- 特定のフォームだけ別フォームからの参照がされません
VB 2005,Framework2.0を使用しています。 現在、サブフォームからダイアログフォームを表示し、ダイアログフォーム内の入力値等をサブフォームに渡す処理を行っています。 サブフォームは複数作成しており、特定のサブフォームだけダイアログフォームの入力値がサブフォームに渡されず原因が分からなくて困っています。 コードは以下のような形で書いています。 'サブフォーム Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f As New Dialog1 f.StartPosition = FormStartPosition.CenterParent f.ShowDialog() End Sub End Class 'ダイアログフォーム Public Class Dialog1 Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click Form1.Label1.Text = Textbox1.text Me.Close() End Sub End Class 2005では、別フォームからの参照はVB6と同じようにインスタンスを作成しなくても参照できる様になったと聞いていますので、上記のコードでも参照方法として問題はないと思うのですが、うまく動作しない原因が分かる方が居られましたら宜しくお願いします。
- ベストアンサー
- Visual Basic
- VB2010の、Formを開く動作に関する質問です
VB2010のFormについてお聞きしたいことがあります。 例えばForm1とForm2の2つがあるとして、 ・Form1上のボタンをクリック後Form2が表示される ・Form2を表示後Form1は自動で閉じられる。 この様な事をするにはどの様に行えばよろしいでしょうか? 試しに、 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() Me.Close() End Sub と、してみたのですが Form2が表示された直後に1と2両方消えてしまいました。 改善方法を教えていただけると嬉しいです。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- sub プロシージャを呼び出すにはどうればいいんですか?in vb 2005
恐れ入ります。 vb2005にて、sub プロシージャをよびだしたいんですけどどうすればよろしいでしょうか?教えて下さい。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click load ike 'vb6ではこれでいけたのに・・・ End Sub Public Sub ike() textbox1.text="イケメン" end sub End Class
- ベストアンサー
- Visual Basic
- VB.NET フォーム上に描いたグラフィックのクリア方法
最近、VB6からVB.NET 2003へプログラムの移行作業を始めたものです。極々基本的なことなのかもしれませんが、.NETでフォームに描いたグラフィック(線や円など)を消去するコードがなかなかうまく書けず困っています。 VB6でしたら Form**.Cls だけで消えるのですが、それに対応するコードはどのように記載すれば宜しいでしょうか? ヘルプなどで見るとClearメソッドを使用するとありましたが、どうもうまく動きません。 例えば、以下の簡単な例でしたらどのように変えれば宜しいでしょうか? 宜しくお願いいたします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim grph As System.Drawing.Graphics grph = Me.CreateGraphics grph.DrawLine(Pens.Red, 50, 25, 200, 150) ClearScreen(e) End Sub Public Sub ClearScreen(ByVal e As PaintEventArgs) Dim BGcolor As Color BGcolor = Color.FromArgb(0, 0, 0) e.Graphics.Clear(BGcolor) '背景色 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ClearScreen(e) End Sub
- ベストアンサー
- Visual Basic
- VB2010でMDI親フォームから子フォームを表示
VB2010でソフトを作っております。 MDI親フォームから子フォームを表示させたいのですが…。 過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。 1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる 2.子フォームが表示されていなかったら表示させる 3.子フォームが表示されていたら何もしない これだけの事ですがずいぶん悩んでおります。 全コードがこれです。 Public Class Form1 Private f2 As New Form2 Private Sub Form1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.IsMdiContainer = True End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fChild As Form() = Me.MdiChildren For Each f As Form In fChild If f.Text = "Form2" Then Exit Sub End If Next f2 = New Form2 f2.MdiParent = Me f2.Show() f2.Activate() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If f2 Is Nothing OrElse f2.IsDisposed Then f2 = New Form2 f2.MdiParent = Me End If f2.Show() f2.Activate() End Sub End Class ボタン1でもボタン2でも、期待する動作はするのですが、 ボタン1ではアクティブになっているフォームの名前を力技で取得している気がして… ボタン2では子フォーム(Form2)をすでに表示している状態でもさらにShowをしているのが気に入らなくて… もっとスマートな方法がありましたら、ご指導お願いします。
- ベストアンサー
- Visual Basic
お礼
どうもありがとうございます! アドバイスいただいた後色々試させていただきまして、 何とか整理できました^^ >デュアルモーダル? ツインモーダル? どっちの名前がより格好良いかな? 自分的にはツインモーダルでございます Σ d(-_☆) あと今後3つ以上使う人が現れることを見据えて「マルチモーダル」とかw ̄ー ̄ >わたくしごとで大変恐縮だがちょっと僕ももう寝ないといけないので いえいえ私めのような者の質問に上級者の方々から少しでも アドバイスいただくことができれば十分でございますし非常に助かります。 結局Form1からForm2.ShowDialog後、 Form2からForm3.Show といたしましたら Form3のMouseDownやMouseMoveイベントのみは 取れることが分かりましたので、 Form3上のクリックしないと使えないコントロール群を なんとか他のFormへ移動いたしまして、 Labelなど表示用コントロールのみ残しましたところ、 自分のやりたいことができるようになりました^^ Form1は完全に停止させたかった次第でございます。 この度はご親切なご説明どうもありがとうございました!! m(_ _)m