■12752 / inTopicNo.3) |
Re[1]: フォーカスについて |
□投稿者/ tama (1回)-(2008/01/16(Wed) 22:32:50)
|
■No12748 (がぶすけ さん) に返信
はじめまして。tamaと申します。
> Form1の上にいくつかテキストボックスがあり、マウスでフォーカスしてから
>
> ボタンを押下すると××を書き込む仕様にしたいと思います
いろいろな方法があるでしょうし、TextBoxをどれくらい配置するかにもよると思いますが、簡単なのは下記のような考え方かなと…。
※既に試した方法ならスルーして構いません
Public Class Form1
'今回はForm1側のコードをあまり長くしたくなかったので、先にデザイン画面で全てのTextBoxのTagを設定しておきました。
'但しデザイン画面からのTagは全てテキストとして扱われるので、数値等にしたい場合はLoadイベント等他の機会に設定します。
'Tagプロパティについての詳細→http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.tag(VS.80).aspx
Dim currentTag As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'TextBoxのEnterイベントで切り替わったcurrentTagの内容で直前のTextBoxを判定します。
Select Case currentTag
Case "1"
'便宜上、どのTagの値が入ってたかわかる用敢えて番号をつけています。
Me.TextBox1.Text = "test"
Case "2"
Me.TextBox2.Text = "test2"
Case "3"
Me.TextBox3.Text = "test3"
Case "4"
Me.TextBox4.Text = "test4"
Case Else
'念のための処理です。
Me.TextBox1.Text = String.Empty
Me.TextBox2.Text = String.Empty
Me.TextBox3.Text = String.Empty
Me.TextBox4.Text = String.Empty
End Select
End Sub
'各TextBoxにフォーカスが当たる(厳密にはTextBoxがアクティブになる)ごとに
'currentTagの内容を変化させます。
Private Sub TextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter, TextBox4.Enter
currentTag = CType(sender, TextBox).Tag
End Sub
End Class
「ボタンを押下すると××を書き込む仕様」とのことから、TextBoxに入るのは固定値と判断させて頂きました。
もし、そうでないとしたら話は変わってくるでしょう。
|
|