• ベストアンサー

ラベルのクリックイベントについて

現在、MDIParent1フォームに、MDI子フォーム(Form1)を表示させています。 MDIParent1フォーム,MDI子フォーム(Form1)には、それぞれlabel1が配置されています。 やりたい事 MDIParent1フォーム上のlabel1をクリックしたとき MDI子フォーム(Form1)上のlabel1のリックイベント を発生させたい よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • tissue001
  • ベストアンサー率21% (28/132)
回答No.1

まず、Form1のLabel1のClickイベントをPublic にする。 Private Sub Label1_Click(~) Handles Label1.Click ↓ Public Sub Label1_Click(~) Handles Label1.Click こうすることで、別フォームから呼び出し可能になります。 そして、 MDIParent1のLabel1のクリックイベントに Call Form1.Label1_Click(Nothing, Nothing) を記述することで、Form1.Label1_Clickを実行することができます。 ただし、Form1の開き方が、NewでShowしている場合、別途処理が必要です。

nao-yui
質問者

お礼

回答ありがとうございました。 '子フォームとするフォームを作成する Dim frm As New Form1 '親フォームをこのフォームにする frm1.MdiParent = Me '子フォームを表示する frm1.Show() 上記の方法でForm1を開いているためうまくいきませんでした。 何か良い方法はないでしょうか。

その他の回答 (1)

  • tissue001
  • ベストアンサー率21% (28/132)
回答No.2

> '子フォームとするフォームを作成する > Dim frm As New Form1 > '親フォームをこのフォームにする > frm1.MdiParent = Me > '子フォームを表示する > frm1.Show() > 上記の方法でForm1を開いているためうまくいきませんでした。 > 何か良い方法はないでしょうか。 ちなみにfrm1は複数表示されることはありますか? もしfrm1が複数表示されている場合、MDIParent1のLabel1をクリックした時には開いているfrm1のLabel1_Clickを実行してもよろしいのですか?

関連するQ&A

  • 他フォームのクリックイベント取得

    VS2005を使ってちょこちょこプログラムの勉強をしています。 現在、同一ソリューション内のフォームの間のイベントを実装出来なくて困っています。 やりたい事は Form1から、Form2を起動し、Form2のボタンをクリックした時に、 Form1でForm2のクリックイベントを取得したいのです。 自分なりに調べてみましたが、該当するようなところが中々見つかりませんでした。 わかる方いましたら、ご教示お願いします。 足らない情報等ありましたら、ご指摘ください。

  • MDIParent1に、ToolStripButton1とLabel1

    MDIParent1に、ToolStripButton1とLabel1、Label2を 配置しています。 やりたいことは  (1)ToolStripButton1をクリックしてForm1を表示させる。  (2)Label1をクリックしてForm1のTextをLabel1のTextに変更する。  (3)Label2をクリックしてForm1のTextをLabel2のTextに変更する。 最初に表示させたForm1のTextのみを変更させる。 現在下記のプログラムを実行したのですが Label1をクリックすると新たにForm1が表示されてしまいます。 (Form1のTextはLabel1のTextに変更されている) Label2をクリックすると新たにForm1が表示されてしまいます。 (Form1のTextはLabel2のTextに変更されている) クリックする毎にForm1がふえていきます。 対策方法を教えてください。 Public Class MDIParent1 Dim F1 As Form1  Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Dim frm As New Form1 frm.MdiParent = Me frm.Show() End Sub   Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click F1 = New Form1 F1.Visible = True F1.Text = Label1.Text Label1.BorderStyle = BorderStyle.Fixed3D Label2.BorderStyle = BorderStyle.None End Sub   Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click F1 = New Form1 F1.Visible = True F1.Text = Label2.Text Label2.BorderStyle = BorderStyle.Fixed3D Label1.BorderStyle = BorderStyle.None End Sub End Class

  • VB6 ユーザコントロールでクリックイベント

    コンボボックスにclickイベントを書いたのち(この段階ではprivate) このコントロールをユーザコントロールにしました。 フォーム上に上記のユーザコントロールを配置したところ クリックイベントが発生しません クリックイベントを発生させるには 何か特殊な記述が必要ですか?(例えばオーバライドとか) どうすればクリックイベントを発生させられますか

  • C# ですみませんが ClientRectangl

    MDI の子フォームでClientRectangleの値が変わります。 MDI全画面表示でPictureBoxを画面サイズに合わせて描画しようとしています。 サイズが計算されたものと違う、Locationも 親 frm = new Form2(); frm.MdiParent = this; frm.Size = new Size(mc.ClientRectangle.Right, mc.ClientRectangle.Bottom); Right=1161 Bottom=652 子 Form2_Load内でのClientRectangle Right=1128 Bottom=614 実際のPictureBoxをクリックイベントで捕まえる Right=1144 Bottom=652 どうしてこうなるのでしょうか?

  • サブフォームでのダブルクリックイベント

    Access2003です。 フォームにサブフォームを設置し、直接テーブルを表示させています。 このサブフォームのテーブルのある行をダブルクリックしたら その行のデータを他のフォームのオブジェクトにセットしたいのですが 行や行のデータ全てを取得は出来るのですが、サブフォームのイベントがEnterとExitしかなくて、イベント発生が出来ません。 フォームのダブルクリックでXとYを見て…と思ったのですがサブフォーム上ではフォームのダブルクリックイベントが発生せず。 サブフォームのテーブルはユーザーがソートする事もあるのでベタに上にテキストボックス等を置く事は出来ません。 どうにかダブルクリックで動作させる方法はありませんでしょうか?

  • なぜ、clickイベントが起こってしまうのか? 回避するにはどのように

    なぜ、clickイベントが起こってしまうのか? 回避するにはどのようにしたら? お世話になります。 Visual Studio 2008 C#での開発です。 以下のような簡単なコードでの実験なのですが、 フォームには radioボタン2個とボタンが配置されています。 やりたいことは  1.button1がクリックされたらbutton1自身を使用不可にする  2.radioButton1がクリックされたらbutton1を再度使用可にする です。 しかし、どうもbutton1のクリックイベントの途中でradioButton1の クリックイベントが発生してしまい、思ったような動作になりません。 どのようにしたらbutton1のクリックイベントの途中のradioButton1の クリックイベントの発生を止めることができるのでしょうか? よろしくお願いします。 namespace WindowsFormsApplicationTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Console.WriteLine("1:button1がクリックされました"); Console.WriteLine("2:button1のenabled=" + button1.Enabled); button1.Enabled = false; Console.WriteLine("6:button1のenabled=" + button1.Enabled); } private void radioButton1_Click(object sender, EventArgs e) { Console.WriteLine("3:radioButton1がクリックされました"); Console.WriteLine("4:button1のenabled=" + button1.Enabled); button1.Enabled = true; Console.WriteLine("5:button1のenabled=" + button1.Enabled); } } } 上のコードでの実験結果 1:button1がクリックされました 2:button1のenabled=True 3:radioButton1がクリックされました 4:button1のenabled=False 5:button1のenabled=True 6:button1のenabled=True

  • クリックイベントなのに、2回クリックしないとフォー

    クリックイベントなのに、2回クリックしないとフォームが閉じないです。 フォームに閉じると言うコマンドボタンがあり、クリックイベントで Private Sub cmd_閉じる_Click() DoCmd.Close acForm, Me.Name End Sub としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。 2回目押した時にフォームがとじます。 ダブルクリックでも閉じます。 Private Sub cmd_閉じる_Click() 'DoCmd.Close acForm, Form_Fフォーム.Name End Sub のように、フォーム名を指定すると1回のクリックで閉じます。 しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。 Fフォームは他フォームから DoCmd.OpenForm Form_Fフォーム.Name, acNormal で開いたから2回クリックしないと閉じないのでしょうか?

  • comboboxのクリックイベントについて

    VB6です comboboxを設置してクリックイベントに処理を書いたら、フォームロード時に必ず1回クリックイベントが発生します。 当初はフラグを立ててこの現象を回避していたのですが、コードを書くうちに、この最初のクリックイベントが面倒で仕方ありません。 comboboxを設置するとフォームロード時に必ずクリックイベントが発生するのはVB6の仕様なのでしょうか。 それともほかに回避の仕方があるのでしょうか。

  • 右クリックイベント

    Windows XP、Access2000での開発で、サブフォーム上のテキストボックスを右リックすると (普通のクリックではなく、あえて右クリック)、 別のフォームが表示される処理を作ろうとしています。 VBAのコードを Private Sub テキストボックス名_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)  If Button = acRightButton Then  DoCmd.OpenForm "フォーム名"  End If End Sub としているのですが、これだとマウスを離してしまうと、画面が閉じてしまいます。 普通のクリックでのイベントと同じように、右クリックで別のフォームを表示するにはどうしたらよいでしょうか? 初心者です。 どなたか分かる方教えてください!!

  • MDIで、子フォームのみWPF

    winformで作ったアプリケーションに、MDIの導入を考えています。と同時にWPFにも興味があるのですが、MDIで作られる子フォームのみWPFにすることは可能でしょうか? 親winform⇒子winformの場合 //Form4はwindowsform Form4 childform = new Form4(); childform.MdiParent = this; childform.Show(); このように書いています。 それを 親winform⇒子WPFで //UserControl1はユーザーコントロールWPF UserControl1 childform = new UserControl1(); childform.MdiParent = this; childform.Show(); このように書いてみたのですが、エラーで使えませんでした。 MdiParentとShowに赤い線が引かれ、 自動機能で MdiParentには public Form1 MdiParent { get; set; } Showには internal void Show(){ throw new NotImplementedException(); } が、作られましたが解決には至りませんでした。 環境はvisualstdio2013でC#です。 そもそも子formのみWPFは可能なのでしょうか? 可能であれば、方法を教えてください。

専門家に質問してみよう