2017-11-22 8 views
0

プログラムで作成されたテキストボックスのkeypressイベントを処理しようとしていますが、イベントが機能せず、その関数に参照があることが示されています。プログラムで作成されたテキストボックスのキー入力を処理します

TextBox tb = new TextBox(); 
this.Controls.Add(tb); 

とあなたがコントロールにイベントハンドラを追加する必要がイベントハンドラ

private void tb_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
    { 
     e.Handled = true; 
    } 
} 

答えて

3

:あなたが倍増するとき

tb.KeyPress += tb_KeyPress; 

通常、視覚スタジオは、シーンの後ろにあなたのためにこれを行いますデザイナーからTextBoxをクリックします。しかし、これはプログラムで作成されているので、自分で仕事をする必要があります。

+0

場所制御は、残念ですが、右 'this.Controls.Add(TB)の後にその行をC#の –

+0

@MoatazMahmoudの新しい追加しています;'、あなたがでていることでしたどこ。 –

+0

解決済み。ありがとう。 –

0

ビューに追加する前に、カスタムキー押しをテキストボックスに割り当てる必要があります。

TextBox tb = new TextBox(); 
tb.KeyPress += tb_KeyPress; //add this 
this.Controls.Add(tb); 

private void tb_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
    { 
    e.Handled = true; 
    } 
} 
1

申し訳ありませんが、十分な評判はpelaseが1 :)としてそれをマークしていない、これは明確な答えではありません(コメントするには

制御、申し訳ありませんが、C#で新しいです

コードスニペットからは、デザイナーではなく手動でコントロールを追加しているようです。 C#を初めてお使いになる場合は、デザイナから追加することをお勧めします。これは他の必要なプロパティをうまく処理します。

たとえば、新しく作成したコントロールの位置も処理する必要があります。 keypressハンドラの明示的な定義に加えて、LeftプロパティとTopプロパティも指定する必要があります。

TextBox tb = new TextBox(); 
tb.Left = 100; //distance from the left of your form 
tb.Top = 100; //distance from the top of your form 
tb.KeyPress += tb_KeyPress; 
this.Controls.Add(tb); 
関連する問題