- PR -

kyepressでの設定について

1
投稿者投稿内容
ルイズ
会議室デビュー日: 2008/01/08
投稿数: 10
投稿日時: 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
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-01-08 17:00
KeyDownイベントならKeyEventArgs.Controlプロパティで判断できますが
KeyPressイベントでは無理っぽいですね。
入力制限をかけるならTextBoxを継承して作ったほうがいいと思います。
じゃんぬ氏のページが参考になります。

[C#][VB]数字または一部の文字しか入力できないようにする
http://jeanne.wankuma.com/tips/textbox/permitchars.html
ルイズ
会議室デビュー日: 2008/01/08
投稿数: 10
投稿日時: 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
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-08 18:26
引用:

ルイズさんの書き込み (2008-01-08 18:12) より:

1.数字以外も入力できる
2.Ctrlキーを押した時点でIf式を抜けてしまうので貼り付けできない


コードが根本的に間違っているのでこうなってしまいます。

引用:

コード:

    If e.KeyCode = Keys.ControlKey And Keys.V




みなまで書きませんが、これではやろうとしているコトとはまったく異なった条件のコードになりますよね。

それと、リンク先にも書いてあるとおり、KeyDown イベントであっても根本的な解決にはなりません。 コンテキスト メニューについてはいかがしましょう?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ルイズ
会議室デビュー日: 2008/01/08
投稿数: 10
投稿日時: 2008-01-08 19:08
お返事ありがとうございます。
確かに右クリックメニューに関しては考えがいっていませんでした。
選択やコピー、削除などはできても問題ないのですがunicode制御文字の挿入なんかはできると困りますね。もちろん、最後にnumericチェック等での確認は行いますが。
教えて頂いたコードを参考にもう少し書き直してみます。

1

スキルアップ/キャリアアップ(JOB@IT)