C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 3 を表示中)
■2807 / )  Re[2]: カスタムコントロールのプロパティについて
□投稿者/ みぃ 二等兵(2回)-(2006/03/13(Mon) 10:37:53)

分類:[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コントロールと同じような動きになるのか悩んでいます。
よろしくお願いします。

0
返信 編集キー/


管理者用

- Child Tree -