Ich habe eine benutzerdefinierte TextBox mit der Möglichkeit erstellt, keine Eingabe zu akzeptieren, wenn sie von einem RFID-Lesegerät stammt (definiert mit HID ID). Ich habe die HID ID, ich habe die zwei Ereignisse, ich habe die Eigenschaft zu setzen, aber es funktioniert nicht. HierFreigegebene Variable in Event-Handlern C#
ist der Code:
public partial class STextBox : TextBox
{
private RawInput _kblistener;
private bool _handle = false;
public STextBox()
{
_allowRfid = false;
_kblistener = new RawInput(Handle, true);
_kblistener.KeyPressed += _kblistener_KeyPressed;
}
private void _kblistener_KeyPressed(object sender, RawInputEventArg e)
{
if (e.KeyPressEvent.DeviceName == Config.RFIDreader) Handling = true;
else Handling = false;
}
private bool Handling
{
get { return _handle; }
set { _handle = value; }
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = Handling;
base.OnKeyPress(e);
}
}
Das Problem ist: die erste Feuerungsereignis _kblistener_KeyPressed ist, und es setzt Handhabung wahr, wenn nötig, aber wenn der Code zu OnKeyPress bekommt, Handhabung ist immer falsch. Ich verwende RawInput_dll, um die HID ID zu erhalten.
Haben Sie einen Haltepunkt setzen auf 'else = false' Handhabung sicher nichts anderes zu machen, ist die Aktivierung, dass Event-Handler? –
@EricJ. Vielen Dank für Ihre Antwort. Ja, ich habe es bereits getestet. Nichts passiert :( – RAPTOR
Dann verwenden Sie wahrscheinlich nicht die gleiche Instanz der Klasse. Überprüfen Sie, ob Sie mehr als eine _new STextBox() _ in Ihrem Code haben. – Steve