VB→VB.Netにコンバートしているのですが、
VBで行っている
「cmbBox.Locked = True」
と同じ動きになるように.Netで書く方法がありますでしょうか?
以下helpより抜粋
Visual Basic 6.0 では、コントロールのテキスト ボックス部分が編集できるかどうかを決定するために ComboBox コントロールの Locked プロパティを使用していました。Visual Basic .NET では、Locked プロパティは、デザイン時にコントロールを移動できないように設定するために使用されます。Visual Basic 6.0 の Locked プロパティに直接相当するものはありません。
次の操作
ComboBox コントロールの DropDownStyle プロパティを DropDownList に変更します。
メモ Visual Basic 6.0 では、Locked プロパティを true に設定すると、選択内容を変更できないように設定できました。これと同じような効果を得るには、MouseDown イベントの選択をキャンセルします。
VB初心者で申し訳ございません。
medaka様ありがとうございます。
ComboBox コントロールの DropDownStyle プロパティを DropDownList に変更しましたが変化が見られませんでした。
MouseDown イベントの選択をキャンセルとはどのように書けば宜しいのでしょうか?
Private Sub ComboBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseDown
〜〜ここにキャンセルのようなものを書くと言うことでしょうか?〜〜
End Sub
宜しくお願いします。
VB初心者で申し訳ございません。
medaka様ありがとうございます。
ComboBox コントロールの DropDownStyle プロパティを DropDownList に変更しましたが変化が見られませんでした。
MouseDown イベントの選択をキャンセルとはどのように書けば宜しいのでしょうか?
Private Sub ComboBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBox1.MouseDown
〜〜ここにキャンセルのようなものを書くと言うことでしょうか?〜〜
End Sub
宜しくお願いします。
そりゃ、すごいねー。
DropDownListにしたのに Text が自由に入力可能なんですかー。
それはすごいー。
DropDownListでText入力はできませんが、問題はコンボボックスの▼を押し選択できないようにしたいのです。まさにVB6のLockedと同じです。
キャンセルの方法を教えてください。
宜しくお願いします。
.NETはよく知らないけど、どのボタンを押されたかのビット情報のクリアは出来ませんか?
eの中に情報あると思うけど(e.Button?)。
Enabled は何のためにあるのかと、小一時間問い詰めたいんだけど。
e.ButtonはReadOnlyみたいですね。忘れてください。
> Enabled は何のためにあるのか
よくあるのは灰色表示にしたくないからEnabledは使いたくないってパターンですよね。
こんばんは、じゃんぬ です。
Enabled = False だと文字がグレーダウンするからイヤということでしょうか?
予想としては、難しいと考えます。
確かに、MouseDown は検知できますが、それをキャンセルするのはちょっと...
それと、[F4] キーも DropDown しちゃうのでそれも考慮しなくてはいけません。
[F4] のキャンセルは簡単ですが、MouseDown のキャンセルは面倒ですね。
ちょっと探したのですがイベントの値取得しか見当たらないです。
何か具体的に分かりませんか?
宜しくお願いします。
Enableで文字がグレーダウンは問題でありません。
リストの中身が見えるようにしたいのです。見えるけど選択できない用にです。
いや、Enabled = False は見えるんだけど?
コンボボックッスのプルダウン▼を押してリストが見えるようにしたいのです。
Enable = Falseでは▼が押せません。リストの中身が見えません。
私のVB→VB.Netなのですが
VBの方は次のような動きです。
cmbBoxのテキストにstrAの値があり
リストにA,B,C,Dとあります。
▼を押すとABCDが閲覧できますが、cmbBox.Locked = Trueの効果で編集は不可能になっています。
これと同じようにVB.Netで行いたいのです。
どなたか解決方法が分かりましたら宜しくお願いします。
↑:修正
・テキストにstrAの値→Aの値
・cmbBox.Locked = Trueの効果で編集は不可能
またリストの選択も不可能です。
です。
宜しくお願いします。
じゃあ、Selected〜 が変化した時にキャンセルするだけで良いのでは?
っていうか、少しは自分でやろうよ。
この手の丸投げ質問(依頼)は、放置されてもおかしくないよ。
。。。様
ご忠告ありがとうございます。
頑張ります。
VB→VB.Netの問題がたくさん発生し確かにこの問題を丸投げしていました。
ただどなたか方法が分かりましたらと思いまして・・・
解決しましたので載せて起きます
Windowsの内容:
1.ComboBox コントロールの DropDownStyle プロパティを DropDownList に変更する。
2.MouseDown イベントの選択をキャンセルする。
必要がある事がわかりますが、2.の MouseDown イベントをキャンセルする具体的な方法がわかりませんでした。
以下を作成
Public Class MyComboBox
Inherits System.Windows.Forms.ComboBox
#Region " Windows フォーム デザイナで生成されたコード "
'中略
Private blReadOnly As Boolean = False
Private orgDropDownStyle As ComboBoxStyle
Private iSelectedIndex As Integer
Property isReadOnly() As Boolean
Get
Return blReadOnly
End Get
Set(ByVal Value As Boolean)
blReadOnly = Value
If blReadOnly Then
orgDropDownStyle = Me.DropDownStyle
Me.DropDownStyle = ComboBoxStyle.DropDownList
iSelectedIndex = Me.SelectedIndex
Else
Me.DropDownStyle = orgDropDownStyle
End If
End Set
End Property
Protected Overrides Sub OnSelectedIndexChanged(ByVal e As System.EventArgs)
Me.SelectedIndex = iSelectedIndex
End Sub
End Class
何とか自己解決です。
皆様の為になりましたらと思いまして・・・載せておきます。
以前解決したと言った問題なのですが、修正が入りましたので、再度入力しておきます。
Public Class MyComboBox
Inherits System.Windows.Forms.ComboBox
#Region " Windows フォーム デザイナで生成されたコード "
'中略
Private blReadOnly As Boolean = False
Private orgDropDownStyle As ComboBoxStyle = ComboBoxStyle.DropDown
Private iSelectedIndex As Integer
Property isReadOnly() As Boolean
Get
Return blReadOnly
End Get
Set(ByVal Value As Boolean)
blReadOnly = Value
If blReadOnly Then
orgDropDownStyle = Me.DropDownStyle
Me.DropDownStyle = ComboBoxStyle.DropDownList
iSelectedIndex = Me.SelectedIndex
Else
Me.DropDownStyle = orgDropDownStyle
End If
End Set
End Property
Protected Overrides Sub OnSelectedIndexChanged(ByVal e As System.EventArgs)
Me.SelectedIndex = iSelectedIndex
End Sub
End Class
だいぶ日付がたっていますが、MouseDownのキャンセル方法です。
WndProcを書き換えます。
WM_NCLBUTTONDOWN WM_LBUTTONDOWN WM_NCRBUTTONDOWN WM_RBUTTONDOWN
のメッセージはMSDNを見て下さい。
Protected Overrides Sub WndProc(ByRef m As Windows.Forms.Message)
If Me.ReadOnly AndAlso (m.Msg = &HA1 OrElse m.Msg = &H201) Then
Return
End If
If Me.ReadOnly AndAlso (m.Msg = &HA4 OrElse m.Msg = &H204) Then
Return
End If
MyBase.WndProc(m)
End Sub
じゃんぬさんが言ってたF4対策は?
ツイート | ![]() |