2017-03-27 16 views
1

テキストボックスにフォーカスがある間、リンク可能/ボタンをクリックしてテキストボックス離脱イベントを停止する方法はありますか?フォーカスを失うとテキストボックスの離脱イベントを防止する

私にはテキストボックスTextBox1があります。それを残しておけば、テキストを検証する必要があります。そして、テキストごとに、次のテキストボックスTextBox2の提案を入力する必要があります。

TextBox1がフォーカスしている間にリンクラベル[別の理由でそこにある]をクリックしているときに発砲しています[明らかな]イベントを残し、[ユーザーが入力を完了した後にテキストボックスを残していないため、呼び出されるはずはありません。リンク可能なクリックによってトリガーされました]。

私はリンクラベルのクリックイベントで離脱イベントを退会しようとしましたが、離脱イベントが最初に発生したために役立ちません。

この場合、何が行われるべきですか?

EDIT: 投稿関連のコード、私は両方のテキストボックスに同じイベントハンドラを持ってい

private void txtBox_Leave(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     textBox.Visible = false; 

      #region TextBox 1 
      if (textBox.Equals(txtBox1)) 
      { 
       //Text Box 1 validation 
       //Populating Suggestions for TextBox2 
       //Passing focus on Textbox 2 
      } 
      #endregion 
      #region TextBox 2 
      else if (textBox.Equals(txtBox2)) 
      { 
       //Text Box 2 validation 
      } 
      #endregion 
    } 

私は先に述べたように、リンク・ラベルが異なるためにそこにあると私は無効にしたりすることはできませんテキストボックスの操作中に非表示にします。

一つの観測は、私がリンクラベルをクリックすると、テキストボックスのLeaveイベントが最初に上げ、その後リンクラベルのイベントをクリックして、私たちは休暇のテキストボックスのイベントや他の何かを退会などの任意のロジックを(実行できない、 です)リンクラベルのクリックイベントに - 私たちが望んでいない時間検証プロセスが行われるように。

+0

あなたは、WPFをリサイズを使用していますか、...? (これをタグリストに追加する必要があります)。 – samosaris

+0

@SamusArin私はwinFormsを使用しています。 – Amit

+0

関連するコード、特にTextBox leaveイベントハンドラと検証ルーチンを投稿してください。 – samosaris

答えて

1

link labelをクリックすると、フォーカス制御になります。あなたができることは、textbox1_leaveイベントハンドラでフォームの焦点を絞ったコントロールを見つけることです。 でない場合、であり、link labelである場合、textbox2の提案を入力する機能のみを実行する必要があります。フォームの集中制御を見つけるためにのために

このリンクは助けになるはずです - What is the preferred way to find focused control in WinForms app?

+0

ええ、私はこれらの行に沿って何かを考え出していました。それは、バリデーションが無条件にleaveイベントから発生しているように聞こえますが、何も起こっていないことを確認するコードを見たいと思っています。 – samosaris

+0

@ SamusArin、はい。検証は無条件で実行されています。そして、Arpitが何を提案しても、それはこの状況で私を助けています。 – Amit

関連する問題