• 締切済み

子画面表示 .NET

子画面表示は、Dim form2 As New Form2 form2.show Me.close らしいのですが、このform2(子画面)に親画面のcomboboxの月を持って着て表示し、年はユーザが入力、例えば、”2007年7月”と表示させたいのですが、VB.NETでの表示方法を教えて下さい。

みんなの回答

回答No.3

こんばんは 色々方法はあると思いますが、呼出し先のTagを利用したらどうでしょか Private Sub Button4_Click(ByVal sender ...  form2.Tag = combobox.Text  form2.show form2側 Private Sub Form2_Load(ByVal sender ...  text = Me.Tag ... 変数textにcomboboxの値が入る

aaaaqq
質問者

お礼

こんばんは。回答ありがとうございました。色々な方法があるのですね。今回に限らず、今後使わせて頂きます。本当に勉強になります。

全文を見る
すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Form2側に 1) Public変数を用意する 2) プロパティとして実装する 3) メソッドとして実装する など 受け側で準備しないといけないでしょう Public変数なら Public Class Form2 といった記述の下に Pubilc strMonth as String といった具合に記述し Form2.showの前あたりで Form2.strMonth = Me.Combobox.Text といった具合にします プロパティなら Private myMonthValue as String Public Property myMonth as String   Get()     myMonth = myMonthValue   End Get   Set(ByVal newMonth as String)     myMonthValue = newMonth   End Set End Property 呼び出しは Form2.myMonth = Me.Combobox.Text メソッド実装なら private myMonythVlaue Public Sub SetMonth(newMonth as string)   myMonthValue = newMonth End Sub Pubic Function GetMonth() as string   return myMonyhValue End sub 呼び出しは  Form2.SetMonth( Me.Combobox.Text ) といった具合でしょう

aaaaqq
質問者

お礼

解決しました。ありがとうございます。今後も参考にさせて頂きます。

aaaaqq
質問者

補足

ありがとうございます。 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click ここのイベントプロシージャに入れたいのですが。

全文を見る
すると、全ての回答が全文表示されます。
  • NYOI
  • ベストアンサー率58% (56/96)
回答No.1

子画面の方にプロパティかパブリック変数を作成し、そこに月の値を渡してあげればOKだと思います。

aaaaqq
質問者

お礼

無事解決しました。今後のコードは参考にさせて頂きます。ありがとうございました。

aaaaqq
質問者

補足

ありがとうございます。 Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click の次に入れたいのですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Hideについて(.NET)

    Form1をHideで非表示にし、Form2を開いた後、再びForm1を表示したいのですがうまくいきません。 [form1のイベント] Dim frmForm2 as New Form2 frmForm2.Show Me.hide Sub End [form2のイベント] Dim frmForm1 as New Form1 frmForm1.Show Me.Close Sub End としてあります。 非表示されたフォームを再表示されずに、新しくフォームが開いてしまっていると考えられるんですが、どうしたらよいでしょうか? 

  • ★他アプリの画面一部をコピー表示したい

    お世話になります。 さて図のように「アプリX」があって、 その画面の一部を自作ソフト「Me」画面に表示したいのです。 (WindowsでVBで作成中) いろいろ調べると、 http://dobon.net/vb/dotnet/graphics/invokepaint.html に以下のようなプログラムがありました。 'コントロールの外観を描画するBitmapの作成 Dim bmp As New Bitmap(Me.Width, Me.Height) 'キャプチャする Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height)) 'ファイルに保存する bmp.Save("C:\test\1.png") '後始末 bmp.Dispose() しかしこれはMe自身の画面であって、意味がありません。 それにファイルで保存ではなくMeに表示したいのです。 (これは多分できると思います) 最大の問題は、「アプリX」の“フォーム名”です。 http://dobon.net/vb/dotnet/form/showintaskbar.html には、「タスクバーにフォームを表示しないようにする」として、 (これもやりたいことの一つですが) 'Form1のインスタンスを作成 Dim f As New Form1() 'タスクバーに表示しない f.ShowInTaskbar = False 'フォームを表示する f.Show() とありますが、「Form1」をどうやって取得するのか書いていません。 つまり「アプリX」のフォーム名が分からないのです。 それをどうやって知ることができるでしょうか? それとも考え方が根本的におかしい? よろしくお願い申し上げます m(__)m

  • フォームを画面のど真ん中に表示させたいのですが

    フォームを画面のど真ん中に表示させたいのですが、 http://dobon.net/vb/dotnet/form/startposition.html を見たのですがコードの書き方がよくわかりません。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim f As New Form1() 'フォームを画面の真ん中に表示する f.StartPosition = FormStartPosition.CenterScreenf.Show() End Sub End Class こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.StartPosition = FormStartPosition.Manual Me.Location = New Point(0, 0) End Sub End Class これで左は時に表示する事は出来るのですが、真ん中に表示させるにはどうすればいいでしょうか?

  • 子フォームから開いたフォームと親子関係を結びたい(VB2003)

    子フォームから開いたフォームと親子関係を結びたい(VB2003) VB.NET2003についての質問です。 formMain のクラスに以下のコードを書いて実行させると、form1がformMainの子フォームとして開きます 下記は、「form1」を「formMain」の子フォームとして開くコードです。 (formMainクラス内のコードです)   ------------------------------   Dim f As New form1   Me.IsMdiContainer=True   f.MdiParent=Me   f.Show   ------------------------------ form1には、form2を開くボタンが用意されています。 質問内容は、このform2を、formMainの子フォームとして開くにはどうすればよいか、ということです。 ためしに、form1クラスに以下のコードを書いて実行させたところ、 「formMainは型であるため、式として利用することができない」というエラーメッセージが出てしまいました。   ------------------------------   Dim f As New form2   f.MdiParent = formMain   f.Show()   ------------------------------ 以上、よろしくお願い致します。

  • VB2005で、フォームを初期化したいのですが、教えてください。

    VB2005で、フォームを初期化したいのですが、教えてください。 VB2005で、フォームにデータベース内容(ORACLE)を表示するプログラムを作っています。その際、F8キーを押すと画面内容(テキストボックスやDatagridviewの編集内容)を初期ロード状態に戻すようにしたいと思い、F8キー押下時のイベントに、以下のようにプログラムしました。 dim frm as form frm = new form1 me.close frm.show() としてみましたが、me.closeで、プログラムが終了してしまうようです。 どうするのが適切かお教えください。

  • (VB2008)ShowDialogしたFormを閉じた時の、画面の挙

    (VB2008)ShowDialogしたFormを閉じた時の、画面の挙動について (VB2008EE、OSはVista) Form1からForm2を(ボタンのクリックイベントで) Dim f As New Form2 f.Show(Me) と記述して表示させたあと、 Form2の(ボタンのクリックイベントで) Me.Hide() として、Form2を閉じる記述を書きました。 で、Form2をShowDialogしてから、Hideを実行すると、 Form2が消えるのはいいのですが、残るForm1が、 ・デバッグ実行時は、VB2008EEのWindowの後ろに隠れてしまい、そのままとなる。 ・リリースビルドでは、さすがにそのままとはなりませんが、一旦Form1が  ちらつきます。 この回避策がありましたら教えてください。 。。。 ここからは、いろいろ実験した結果です。 ・試しに、Me.Hide()の後ろに、Threading.Thread.Sleep(5000)を 記述して実行すると5秒間Form1が後ろのアプリ画面に隠れた後、 Form1が前に表示される。 ・この場合の「後ろの別アプリのWindow」について、その別アプリが VB2008やエクスプローラだとForm2がそのアプリに隠れるのですが、 ExcelやIEだと、Form1が後ろに隠れることがないようです。。。 ・Hideではなく、Closeだと、後ろには隠れません。 (ただし、Closeの場合、Threading.Thread.Sleep(5000)の間はForm2は その前にClose()があっても、表示されたままSleepしその後閉じます) ・さらにShowDialog()でなく、Show()の場合、Owner指定して実行した場合は、 (つまりSHow(Me))全く問題なく、Form1が前面に表示されたまま 他のアプリが前に来ることはないのですが、 Ownerを指定せずにShowしたところ、ShowDialogと同様のことが起きるようです。 もし、これらの現象全体についてしっかりと説明できる方がいらっしゃれば、 説明もしていただけるとうれしいです。

  • 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をしているのが気に入らなくて… もっとスマートな方法がありましたら、ご指導お願いします。

  • フォームを閉じる方法

    VB2005 Expressにて開発を行っております。 ログインフォーム、メニューフォーム、各フォームと複数フォームを使用 するアプリを作成中です。 そこで質問させて下さい。呼び出し元フォームを閉じてから呼び出し先 フォームを開くとするにはどのように行ったらいいのでしょうか。 下記が作成中のPGMですが、「Form1からForm2を表示」「Form2からForm1を表示」は正常に動作しますが、再度「Form1からForm2を表示」を行うと 破棄されたオブジェクトにアクセスできません。 オブジェクト名 'Form2' です。 が表示されて「f2.Show()」でエラーになってしまいます。 どなたかご存知の方がいらっしゃいましたらご教授下さい。 よろしくお願いします。 '標準モジュールで下記を宣言 Public f1 As New Form1 'ログイン画面 Public f2 As New Form2 'メニュー画面 Public f3 As New Form3 'メニュー1 Public f4 As New Form4 'メニュー2 'Form1からForm2を表示 F_Form2.StartPosition = FormStartPosition.CenterScreen F_Form2.Show() Me.Close() 'Form2を閉じてForm1を表示 F_Form1.StartPosition = FormStartPosition.CenterScreen F_Form1.Show() Me.Close()

  • 「New」キーワードを使ったFormの表示について

    よろしくお願いします。 VB2005で、Windowsアプリケーションを開発しています。 Formを開く時の「New」キーワードについてお伺いしたく、投稿しました。 手許の参考書に、Form1からForm2を開くときは、 Dim Form2 As New Form2 Form2.ShowDiaolog()  とか Dim NewForm As New Form2 NewForm.Show() と記載されていたんですが、「Dim Form2 As New Form2」や「Dim NewForm As New Form2」という部分は必ず必要なのでしょうか? Form2.ShowDiaolog()だけでも開きますが、これだけだと何か支障があるのでしょうか? Form2を「New Form2」とする意味がわかりません。Newを使って、Form2のインスタンスを作成しておく、と参考書にあったのですが、Form2にボタンや、テキストボックスを配置している時点でインスタンスはできてるのでは?と思っていました。 何かルールみたいなものなのでしょうか?

  • フォーム2を出して フォーム1を閉じたい

    のですが、うまくできません。 何が間違っているのでしょうか Dim WithEvents Frm1 As Form1 Dim WithEvents Frm2 As Form2 ------------------- Frm2 = New Form2() Frm2.Show() Frm1 = New Form1() Frm1.Close() ------------------ net です。