• ベストアンサー

Handlesについて

初心者です。VB2008にて練習中なのですが、下記のようなプログラムで WithEventsの変数が必要とメッセージが出ます。何がおかしいのでしょうか? Private Sub CopyToolStripButton_Click(ByVal sender _ As Object, ByVal e As System.EventArgs) Handles _ CopyToolStripButton.Click Me.TextBox1.Copy() End Sub

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

「Handles 句には、含んでいる型またはその基本型の 1 つで定義した WithEvents 変数が必要です。」 と言うエラーなら、...Handles CopyToolStripButton.Click となっているのにCopyToolStripButtonが無いのでは? ...Handles ????.Click という時の????が無いので、Clickイベントを受ける型かWithEventsで宣言した変数が必要だと言っているんだと思います。 CopyToolStripButtonの下に青い波線(エラー)がありませんか?

kill_neiro
質問者

お礼

出来ました!ありがとうございました。

その他の回答 (1)

回答No.1

メッセージの内容はわかりませんが、プログラムはボタンを押したら TextBox1をコピーするということですよね? それでしたら、いったんTextBox1のテキストを選択しなくてはいけないので、SelectAllで選択してからCopyを行います。 Private Sub CopyToolStripButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CopyToolStripButton.Click TextBox1.SelectAll() TextBox1.Copy() End Sub という感じでいかがですか?

kill_neiro
質問者

お礼

ありがとうございました。

関連するQ&A

  • VB初心者です。コードの書き方が分かりません。

    VB初心者です。 VBで(zのn乗)-(xのn乗+yのn乗)の計算が出来るようにしたいのですが、答えが必ず-1になってしまいます。 Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) End Sub End Class 正しいコードの書き方を教えて下さい。 また特定の答えのときにメッセージを表示したいのですが、どうすればいいですか?

  • 簡単なプログラムにまとめる方法

    前回、同じようなプログラムを簡単にまとめる方法を教えて頂いたのですが新しい事で困ってしまいました。 説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus Me.TextBoxNum.Text = "1" End Sub Private Sub TextBox2_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2_1.GotFocus Me.TextBoxNum.Text = "2" End Sub Private Sub TextBox3_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3_1.GotFocus Me.TextBoxNum.Text = "3" End Sub 上記のプログラム、TextBox○○○_1.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、以下のプログラムで纏めたのですが、 Me.TextBoxNum.Text = "○○○" にフォーカスされたTextBox○○○_1の○○○を入れる方法はありますか? Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus,TextBox2_1.GotFocus,TextBox3_1.GotFocus Me.TextBoxNum.Text = "○○○" End Sub 説明が下手くそでスイマセン、ほかに新しい方法でも有ればお願いします よろしくお願いしますm(__)m

  • このコードはどこが間違っていますか?(至急)

    急ぎのため再度の質問失礼します。 (zのn乗)-(xのn乗+yのn乗)の計算をさせて、答えが0のときにメッセージを表示したいのですが、どのようなコードを書けばいいのでしょうか? Option Explicit On Public Class Form1 Dim x As Long Dim y As Long Dim z As Long Dim n As Long Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click x = TextBox1.Text y = TextBox2.Text z = TextBox3.Text n = TextBox4.Text TextBox5.Text = (z ^ n) - (x ^ n + y ^ n) If (TextBox5 .Text= 0) Then Label6.Visible = True End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label6.Click End Sub End Class このコードだと答えが必ず-1になってしまうのですが、どこを直せばいいのでしょうか? 正しいコードを教えて下さい。 よろしくお願いします。

  • Call文 でデバックできません。

    VB初心者です。 Win2003Sarver+SQL2000+VB.Net2008の組合せで作っています。 Call文で下記の様にすると Private Sub Button自動1600_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button自動1600.Click Call Button1600_Click() <--ここでデバックできません。 End Sub Private Sub Button1600_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1600.Click Me.洗浄機記録BindingSource.AddNew() Me.日付TextBox.Text = Now End Sub Call Button1600_Click() デバックできません。 下記の様にすると動きます。 Private Sub Button自動1600_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button自動1600.Click Call B1600() End Sub Private Sub B1600 Me.洗浄機記録BindingSource.AddNew() Me.日付TextBox.Text = Now End Sub Call先に Click(ByVal sender As System.Object, ByVal e As System.EventArgs) が あると引数か何かが必要になるのでしょうか。 ご存知の方教えてください。

  • VB2013でのプログラム作成でつまづきました

    初めまして ご質問です 会社にて、職場改善のため VB2013でプログラムを作成していますが PCに詳しいのが自分しかいなく、指名されました。。。 もちろん自作PCとか作れるぐらいですが プログラムなんてやったことないし困っています 職場にプログラム専門の方がいるので教育を受けていますが 2.3回教えてもらって  「windowsの電卓を作ろう」と言われました 電卓作成は、初心者用の題材らしいですが とりあえず教えてもらった事を駆使し まずは、テキストボックスとテキストボックスに数字を入れ その二つを +や-ボタンを押し =ボタンを押すと、3つ目のテキストボックスに表示させるという 簡単なプログラムは、なんとかできましたが windowsぽくすると 例 11 + 12 - 9 とテキストに表示され =ボタンを押すと 表示が消え 計算結果が表示されます いまの問題 ・整数と文字列を表示させ、計算だけさせる ・変数宣言、IF、Serectしか教わってない(それだけでできる言われた笑) ・まだ、いまいちわかっていないため 詳しく知りたい 無論、教えてもらったコードをそのまま使いたいわけじゃなく どーいう流れで、どーいう風にというのを理解したいです 結局は自分が理解して、少しずつやらないといけないので 詳しい方、教えてください。 現在なにもできてないコードです ここにどう埋めるか教えてほしいです ------------------------------------------------------------------------------ Option Explicit On Public Class Form Public oboe As String '押されたボタンが数値以外を覚える変数 Public befor As String '押されたボタンが数値の場合 覚える変数 Public anser As Integer ' 計算結果を保存する 変数 Public number As Integer '入力された数値を保存する 変数 Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '1 befor = "1" ans.Text &= "1" End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '2 befor = "2" ans.Text &= "2" End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '3 befor = "3" ans.Text &= "3" End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click 'たし算 oboe = "+" ans.Text &= "+" number = befor + ans.Text End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '掛け算 End Sub Private Sub Button4_Click_1(sender As Object, e As EventArgs) Handles Button4.Click '計算 End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click 'CLEAR End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '引き算 End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '割り算 End Sub Private Sub ans_TextChanged(sender As Object, e As EventArgs) Handles ans.TextChanged

  • C#での書き方

    vb.netでは別のイベントを呼び出すとき下記のような書き方ができたのですが、C#ではどう書くんでしょうか? (ボタン2を押したらボタン1の処理が走る) Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MessageBox.Show("AAA") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Button1_Click(sender, e) End Sub

  • 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

  • VBでデバックするとエラーになる。

    VBでデバックすると下のようなエラーがでます ArgumentNullExceptionはハンドルされませんでした。 値を Null にすることはできません。 パラメーター名: activationContext VBを初めて日が浅いのでヘルプを読んでも意味が理解できませんでした。 なので、易しく回答してもらえると嬉しいです コードは下です Public Class Form1 'TextBox2に入力したURLをWebBrowser1で表示する Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Navigate(TextBox2.Text) End Sub 'ブラウザ→戻るでWebBrowser1を処理する Private Sub 戻るToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 戻るToolStripMenuItem.Click WebBrowser1.GoBack() End Sub 'ブラウザ→進むでWebBrowser1を処理する Private Sub 進むToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 進むToolStripMenuItem.Click WebBrowser1.GoForward() End Sub 'ブラウザ→テキストボックスにURLを入力した時の処理 Private Sub ToolStripTextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.Click WebBrowser1.Navigate(ToolStripTextBox1.Text) End Sub 'TextPageのタブをクリックした時のイベント Private Sub TabPage1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage1.Enter TextBox2.Visible = False Button1.Visible = False ブラウザToolStripMenuItem.Enabled = False 書式ToolStripMenuItem.Enabled = True ToolStripMenuItem1.Enabled = True End Sub 'BrowserPageのタブをクリックした時のイベント Private Sub TabPage2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage2.Enter TextBox2.Visible = True Button1.Visible = True ブラウザToolStripMenuItem.Enabled = True 書式ToolStripMenuItem.Enabled = False ToolStripMenuItem1.Enabled = False End Sub Private Sub 新規ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新規ToolStripMenuItem.Click TextBox1.Text = ("") End Sub Private Sub 開くToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開くToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = OpenFileDialog1.ShowDialog() filename = OpenFileDialog1.FileName If selectButton = DialogResult.OK Then Try TextBox1.Text = _ My.Computer.FileSystem.ReadAllText(filename, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub 保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存ToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = SaveFileDialog1.ShowDialog() filename = SaveFileDialog1.FileName If selectButton = DialogResult.OK Then Try My.Computer.FileSystem.WriteAllText(filename, TextBox1.Text, False, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub フォントToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォントToolStripMenuItem.Click Dim fd As New FontDialog() fd.Font = TextBox1.Font fd.Color = TextBox1.ForeColor fd.MaxSize = 19 fd.MinSize = 8 fd.FontMustExist = True fd.AllowVerticalFonts = False fd.ShowColor = True fd.ShowEffects = True fd.FixedPitchOnly = False fd.AllowVectorFonts = True If fd.ShowDialog() <> DialogResult.Cancel Then 'TextBox1のフォントと色を変える TextBox1.Font = fd.Font TextBox1.ForeColor = fd.Color End If End Sub End Class

  • Elseifのコードが分かりません。(至急)

    急ぎのため再度の質問失礼します。 3つの数字すべてが7のとき、メッセージ1を出し、 どれか2つだけが7のときは、メッセージ2を出し、 どれか1つだけが7のときは、メッセージ3を出し、 どこにも7が含まれていないときは、メッセージ4を出すようにEndifを使って書きたいのですが、正しいコードを教えて下さい。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Visible = False Label4.Visible = False Label1.Text = CStr(Int(Rnd() * 10)) Label2.Text = CStr(Int(Rnd() * 10)) Label3.Text = CStr(Int(Rnd() * 10)) If End If End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click End Sub Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click End Sub End Class よろしくお願いします。

  • ボタンをクリックしても空白をリストに追加しないようにしたい

    初心者ですのでよろしくお願いいたします。 以下のようなコードでボタンを押すとテキストボックスに入力してあるテキストをリストに登録したいのですが、空白の場合は追加したくありません。どのように書けばいいでしょうか? よろしくお願いいたします。 (ちなみにLabel3にはリストに登録された数が出ます) Public Class Form1 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Add(TextBox1.Text) TextBox1.Clear() Label3.Text = ListBox1.Items.Count End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Remove(ListBox1.SelectedItem) Label3.Text = ListBox1.Items.Count End Sub End Class

専門家に質問してみよう