- - PR -
kyepressでの設定について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-08 16:30
初めまして。
以下のようなコードを作成し入力制御を考えているのですが、 他のテキストボックスへのコピー、貼り付けを有効にするため、Ctrl&C、Ctrl&Vをできるように変更したいと思っています。 ショートカットキーを使用できるようにする方法がお分かりの方がいらっしゃいましたらお教えください。 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Select Case e.KeyChar Case "0"c To "9"c Case vbBack Case Else e.Handled = True End Select End Sub | ||||||||||||
|
投稿日時: 2008-01-08 17:00
KeyDownイベントならKeyEventArgs.Controlプロパティで判断できますが
KeyPressイベントでは無理っぽいですね。 入力制限をかけるならTextBoxを継承して作ったほうがいいと思います。 じゃんぬ氏のページが参考になります。 [C#][VB]数字または一部の文字しか入力できないようにする http://jeanne.wankuma.com/tips/textbox/permitchars.html | ||||||||||||
|
投稿日時: 2008-01-08 18:12
ご返答ありがとうございます。
keypressでの制御からkeydownでの制御に変更してみたのですが、 ctrlキーとVキーが押されたらクリップボードから貼り付けを行い、 それ以外の場合はBSキーの使用と数字の入力のみ可能となるようにしたところ、 1.数字以外も入力できる 2.Ctrlキーを押した時点でIf式を抜けてしまうので貼り付けできない という状態になってしまい戸惑っています。 記述し直したコードは以下のとおりです。 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = Keys.ControlKey And Keys.V Then If Clipboard.ContainsText() Then Console.WriteLine(Clipboard.GetText()) End If Else Select Case e.KeyCode Case Keys.D0 To Keys.D9 Case Keys.NumPad0 To Keys.NumPad9 Case Keys.Back Case Else e.Handled = True End Select End If End Sub | ||||||||||||
|
投稿日時: 2008-01-08 18:26
コードが根本的に間違っているのでこうなってしまいます。
みなまで書きませんが、これではやろうとしているコトとはまったく異なった条件のコードになりますよね。 それと、リンク先にも書いてあるとおり、KeyDown イベントであっても根本的な解決にはなりません。 コンテキスト メニューについてはいかがしましょう? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2008-01-08 19:08
お返事ありがとうございます。
確かに右クリックメニューに関しては考えがいっていませんでした。 選択やコピー、削除などはできても問題ないのですがunicode制御文字の挿入なんかはできると困りますね。もちろん、最後にnumericチェック等での確認は行いますが。 教えて頂いたコードを参考にもう少し書き直してみます。 |
1