|
分類:[VB.NET]
お返事遅くなりました。申し訳ないです。 ryuukouさん、名無しぃシャープさんコメントありがとうございます。
■No2794に返信(名無しぃシャープさんの記事) > ReadOnlyがTrueならば、背景色を変えないという条件を入れるだけ。 > EnterイベントとLeaveイベントに入れればよい。
私もこの条件をいれるだけかと思ってやってみたのですが 背景色は変更されませんが、フォーカスは取得してしまうようなんです。
> ■No2793に返信(ryuukouさんの記事) >>失礼します。 >>フォーカスを取得してしまうとのことですので >> >>TabStopをFalseにすればいいのかなと思います。 >>見当違いでしたら、申し訳ありません。 > > たぶん見当違いですね。 > マウスでフォーカスは取得できます。
はい。名無しぃシャープさんのおっしゃる通りマウスでのフォーカス取得も したくないのでTabStopではなくReadOnlyをTrueに設定したいのです。
説明が不十分だったので、もう一度何がしたいのか書きますと 下記のようなカスタムコントロールを作成しました。 Public Class TextBoxEx Inherits System.Windows.Forms.TextBox
#Region "New" Public Sub New() MyBase.New() End Sub #End Region
#Region "TextBoxEx_Enterイベント" Private Sub TextBoxEx_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter '文字を選択状態にする CType(sender, TextBoxEx).SelectAll() '背景色を設定する With Me .BackColor = Color.Yellow End With End Sub #End Region
#Region "TextBoxEx_Leaveイベント" Private Sub TextBoxEx_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Leave '背景色を戻す With Me .BackColor = Color.WhiteSmoke End With End Sub #End Region
End Class
続いてWindowsアプリを新規に作成し、このコントロールを3つ配置しました。 各コントロールのReadOnlyプロパティはFalse/True/Falseという順です。 これで実行すると、Tabキーでフォーカス移動をさせたとき2つ目のコントロールには 飛んで欲しくないのですが、現状飛んでしまいます。 ReadOnlyプロパティが有効でないような・・・ どうしたら標準のTextBoxコントロールと同じような動きになるのか悩んでいます。 よろしくお願いします。
|