Ich versuche, TextBox zu erstellen, so dass Benutzer nichts eingeben können, aber sie in der Lage sein sollten, Informationen mit Clipboard Text einzufügen.Lassen Sie Benutzer kopieren und Text in Textfeld einfügen, deaktivieren Sie jedoch manuelle Bearbeitung in C#
Antwort
Sie können die TextBox KeyPress
event abonnieren, in der Sie immer die e.Handled
Eigenschaft auf True festlegen, außer wenn Sie eine Zwischenablagekombination (STRG + C, V) drücken.
in die Zwischenablage Kombination identifizieren Sie werden auch in dem auf die KeyDown
event abonnieren haben Sie die Taste oder Tastenkombination über einen in der Lage, zu identifizieren, dann Boolean
Variable, die Sie gedrückt wurde (von der, die Sie KeyPress
Ereignis lesen) kann angeben, ob die Kombination zulässig ist oder nicht.
Doing, was ich gerade beschrieben, wird jede Tastatureingabe (dh nicht STRG + C oder STRG + V) zu nicht von der TextBox behandelt werden, so wird es keine Zeichen hinzufügen, wenn Sie nicht einfügen.
Dim InputIsCommand As Boolean = False
Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
InputIsCommand = e.Control = True AndAlso (e.KeyCode = Keys.V OrElse e.KeyCode = Keys.C)
End Sub
Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
e.Handled = Not InputIsCommand
End Sub
C# Version:
public Form1() //Form constructor.
{
InitializeComponent();
textBox1.KeyPress += textBox1_KeyPress;
textBox1.KeyDown += textBox1_KeyDown;
}
bool InputIsCommand = false;
private void textBox1_KeyDown(Object sender, System.Windows.Forms.KeyEventArgs e)
{
InputIsCommand = e.Control == true && (e.KeyCode == Keys.V || e.KeyCode == Keys.C);
}
private void textBox1_KeyPress(Object sender, System.Windows.Forms.KeyPressEventArgs e)
{
e.Handled = !InputIsCommand;
}
Konnten Sie den Text immer noch nicht bearbeiten, indem Sie einen Teil markieren und mit der Maus "ausschneiden"? – bitnine
Vielen Dank für diese Antwort. Es funktioniert jetzt. Aber im Moment funktioniert es nur mit der rechten Maustaste "Einfügen". Ist das mit Strg + V möglich? – Sagar0921
@bitnine: Ja, aber er hat nicht gebeten, nicht in der Lage zu sein. Nur nicht eintippen. –
- 1. So deaktivieren Sie kopieren einfügen in Android
- 2. Deaktivieren Sie den Cursor und kopieren/Einfügen in UITextView (swift)
- 3. Deaktivieren Sie Text ziehen in einem Textfeld mit ExtJS
- 4. Stoppen Sie die manuelle Bearbeitung im Kombinationsfeld, WPF
- 5. Deaktivieren Kopieren und Einfügen
- 6. Deaktivieren Sie die Schaltfläche, wenn Text in Textfeld korrekt eingegeben und Dialogfeld in C#
- 7. Benutzerdefiniertes Kopieren/Einfügen-Verhalten mit C# winforms, während Text bearbeiten können Kopieren/Einfügen
- 8. Machen Sie WPF Textfeld als Ausschneiden, Kopieren und Einfügen eingeschränkt
- 9. Lassen Sie Sonderzeichen im Textfeld
- 10. Lassen Sie nur Zahlen und Sonderzeichen (-) in ein Textfeld eingeben
- 11. GACUtil vs. manuelle Bearbeitung C: \ Windows \ Assembly
- 12. Text aus Textfeld nehmen und in span in Javascript einfügen
- 13. Kopieren/Einfügen Cursor Sprache in Textfeld
- 14. Kopieren Sie nur Text von einem Textfeld in ein anderes Textfeld mit Javascript
- 15. Deaktivieren Sie Textauswahl und kopieren Sie Einfügen in Hybrid-App mit JS
- 16. Deaktivieren Sie Ausschneiden, Kopieren, Einfügen, aber aktivieren Sie Link und Bildlauf in UITextview
- 17. Kopieren und Einfügen in Silverlight
- 18. So lassen Sie den Benutzer ein Leerzeichen einfügen
- 19. Wie Sie ein Textfeld in Appcelerator deaktivieren?
- 20. Umgang mit Text kopieren/einfügen von Word
- 21. Leerzeichen vor Text in Textfeld einfügen
- 22. Aktivieren und deaktivieren Sie CKEditor Inline-Bearbeitung mit Angular
- 23. Deaktivieren Bearbeitung in Datagridview
- 24. Kopieren Sie Text von Label in xamarin.forms
- 25. Lassen Sie Benutzer Beiträge in Wordpress sortieren
- 26. tinyMCE - Quellcode-Bearbeitung in einem Textfeld
- 27. Kombinationen deaktivieren in Textfeld und Eingabe
- 28. Lassen Sie nur Zahlen im Bereich in das Textfeld eingeben
- 29. vb.net Text in aktives Textfeld einfügen
- 30. Deaktivieren Sie die Textbearbeitung, wenn die Eingabeansicht für das Textfeld
Was Sie bisher versucht haben? Was genau ist deine Frage? Momentan sieht es so aus, als würden Sie uns sagen, was Sie vorhaben. –
Sorry für vage Frage. Also versuche ich TextBox zu erstellen, die nur durch Kopieren und Einfügen bearbeitet werden kann. Der Benutzer sollte nicht in der Lage sein, manuell etwas in das Textfeld einzugeben, sondern nur das Einfügen in dieses Textfeld. Bisher habe ich CustomTextBox, die TextBox-Klasse erweitert. Und überschreiben Sie die folgende Methode. geschützt überschreiben void WndProc (ref Nachricht m) – Sagar0921
Es gibt mehrere Möglichkeiten, dies zu tun, aber warum möchten Sie? Sie machen es nur schwieriger, die Anwendung zu verwenden. Es gibt nichts hier, um jemanden davon abzuhalten, open notepad.exe zu öffnen, zu tippen, was auch immer sie wollen, den Text, den sie gerade eingegeben haben, zu kopieren und ihn in Ihre Textbox einzufügen, um so Ihre Anforderung "keine manuelle Bearbeitung" zu umgehen. – Jakotheshadows