2016-10-24 13 views
0

私はWebフォームを使用していますC#テキストボックスに入力するとコードを実行する方法

今すぐテキストボックスを終了し、テキストが変更されるとコードが実行されます。私は問題にぶつかっています。テキストを変更して、入力する代わりにボタンを押すと、コードでリセットされます。テキストを変更してまだ何もしていないボタンをクリックするか、テキストを変更してコードをトリガーするEnterを押すことができるようにする必要があります。ヘルプ

このため

おかげで、テキストは何をする必要がどのようなイムの表記とテキストボックスのイベントを変更しています。本当に私は私が必要だと思うものを、入力してクリックするためのイベントであるあなたは、あなたのテキストボックスのKeyDownイベントのためのメソッドを実装する必要があるテキスト

protected void txtboxPlate_TextChanged(object sender, EventArgs e) 
     { 
      if (txtboxPlate.Text == "plate number") 
      { 
       //will check database for "plate number" and do stuff on enter. 
      } 
      else 
      { 
        resetforms();// on enter 
      } 
     else 
     { 
      the text has changed by user, but has clicked a button and needs nothing to happen because of this text change 
      }  
     } 
+0

これはwinforms、webforms、mvcですか?あなたが得る答えに焦点を当てるために、追加のタグ/詳細を追加してください。 –

+0

Enterが押されたことをどこで確認していますか? – poke

+0

http://stackoverflow.com/questions/563195/bind-textbox-on-enter-key-press –

答えて

1

を変更しません。

private void txtboxPlate_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) { 
      //Code 
    } 
} 
+0

型または名前空間KeyEventArgsが見つかりませんでした。私はそれが助けば私が信じるウェブフォーム(ウェブサイトプロジェクト)を使用しています。 – birddseedd

+0

あなたはあなたの質問にそのことを明記しておきます。私は多くのWinFormsを使用すると仮定したと思います。私はあなたの質問のタグを更新しました。 – jAC

+0

ああ申し訳ありません。そうですね、私はあなたがWebフォームの解決策を望んでいることを認識していませんでした。残念ながら、私はあなたを助けることができません。 – FatTony

0

これはWinフォームであり、あなたはまだあなたがたとえば最初にコードをキャッチしようとすることができtextchanged使用したい場合:txtboxPlate.Textは「プレートの番号を」equelsない限り、何をしているかtextchanged

protected void txtboxPlate_TextChanged(object sender, EventArgs e) 
    { 
     //Catching code 
     if (txtboxPlate.Text != "")   
     { 
      if (txtboxPlate.Text == "plate number") 
      { 
       //will check database for "plate number" and do stuff on enter. 
      } 
      else 
      { 
       resetforms();// on enter 
      } 
     } 

    else 
    { 
     the text has changed by user, but has clicked a button and needs nothing to happen because of this text change 
    } 

原因でありますそれは常にelseステートメントを実行します。私は間違っている場合私を修正しますが、私はほとんど私が狂気になる前に同じ問題を抱えていた。

または1 upvoteコードの上にしてみてください:

protected void txtboxPlate_TextChanged(object sender, EventArgs e) 
{ 
    //Event only happens if you press enter 
    if (e.KeyCode == Keys.Enter) 
    { 
     if (txtboxPlate.Text == "plate number") 
     { 
      //will check database for "plate number" and do stuff on enter. 
     } 
     else 
     { 
      resetforms();// on enter 
     } 
    }    


else 
{ 
    the text has changed by user, but has clicked a button and needs nothing to happen because of this text change 
} 
} 
+0

これがうまくいくかどうかはわかりません。 if(txtboxPlate.Text!= "")は、他のボタンが押される前に常にtrueになります(この時点ではenterは押されません)。しかし、値がデータベースにないので( "プレート番号")、最初のelseに行き、フォーム – birddseedd

+0

をリセットしたいが本当に!= ""またはnullである必要はありません。原因textchangedイベントは、txtboxPlate_TextChangedの値が変更され、最初のifステートメントが真である限り、Enterキーを押すかボタンを押しても常に発生します。 –

0

のKeyDownは、私はあなたがそうするJavaScript/jQueryのを使用しているつもり以上にいる知っている限り、クライアント側のイベントです。

次のリンクを参照してください、まだ実現していない人には :/

編集:私が使用したコメントが、...担当者の問題をするでしょう

Textbox Keydown Event

は、ボタンを使用します。質問は

代替をWinFormsのないWebフォームに変更しました。

テキストフィールドの隣にボタンを置くことができますが、それは簡単であり、多くの作業が入りません。テキストボックスのTabIndexを1に、ボタンのTabIndexを2に設定することができます.TABを押すとテキストボックスにフォーカスし、もう一度押すとボタンにフォーカスが当てられます。デザイン目的でボタンをテキストボックスに追加することもできます。

編集:あなたはまた、ボタンを押すと、ページの取得のポストバックの意味値が失われ、ビューの状態、セッション変数または隠しフィールドを使用する必要があるフィールド内のデータを保持することを考える必要がありますフィールド。簡単にするために、テキストボックスの値を非表示のフィールドに設定してから、単にpage_loadに値を再適用します。値を複数のポストバックにわたって保持する必要がある場合、または他のページからアクセスする場合は、セッション変数を使用します。

コード例として、

Text_changedイベントを完全に削除します。その後をPage_Loadの値をリセット

protected void btnDoStuff(object sender, EventArgs e) 
{ 
    if(txtPlateNumber.Text == "Plate Number") 
    { 
     //Do stuff 
     myHiddenField.Value == txtPlateNumber.Text; 
    } 
    else 
    { 
     //Do other stuff 
    } 
} 

: -

protected void btnDoStuff(object sender, EventArgs e) 
{ 
    if(txtPlateNumber.Text == "Plate Number") 
    { 
     //Do stuff 
    } 
    else 
    { 
     //Do other stuff 
    } 
} 

あなたは値がポストした後に消え気付いた場合は、バックのような何かをします。

+0

それは理にかなっています。このデモの簡潔さのために(私はちょっとした勉強をしなければならず、正午までにこれを行う必要があるという事実)、私はサーバー側にとどまりようとしています。これはサーバー側で可能なものではない可能性があります。 – birddseedd

+0

ボタンを使用できますか?あなたに例を挙げて質問を更新します。 – qqqqq

+0

デモ用にボタンを使用する必要があるかもしれません。それはクライアントサイドのJavaScriptがそれを行う最もクリーンな最も簡単な方法になると思われる。私はちょうどそれをコード化したくない。ボタンを使うだけかもしれません。最終的には、ほとんどの場合、Enterキーを押してこれをできるだけ効率的に保つためにボタンを避けたいと思っています。 – birddseedd

関連する問題