コンボボックスでキーボードから不正な値を入力した場合、Changeイベントで背景色を赤色に設定しています。
コンボボックスのプルダウンをクリックしリストを表示したまま、
不正な値を入力した場合、コンボボックスの入力フィールドのみ背景色が赤色になりリストは赤色になりません。しかし、リストを一度閉じ、再度プルダウンをクリックし、リスト再表示するとリストは赤色になっているのです。
不正な値を入力した場合は、常に入力フィールドだけでなく、リストもすべて赤色にしたいのですが、どなたかご存知の方いらっしゃいませんか?
とても困っています。よろしくお願いします。
十分くらいで発見してつくってみたんだが…
かなり強引、もっとスマートなやり方があるとおもわれる。
メモ帳でfrmファイル作って、まんまコピペで動くと思われ。
[VB6]
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form1"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 'Windows の既定値
Begin VB.ComboBox Combo1
Height = 300
Left = 360
TabIndex = 0
Text = "Combo1"
Top = 1200
Width = 2895
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_SHOWDROPDOWN = &H14F&
Private Sub Combo1_Change()
If Combo1.Text = "abc" Then
Combo1.BackColor = &HFF
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 0, 0
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, 1, 0
Else
Combo1.BackColor = &HFFFFFF
End If
End Sub
Private Sub Form_Load()
Dim i As Long
For i = 1 To 10
Combo1.AddItem i
Next
End Sub
忘れてた…不正な値は abc だった(orz
ツイート | ![]() |