2016-12-08 9 views
0

WinFormsアプリケーション。 ユーザーが認証を行うボタン(タッチスクリーン)に触れ、画面(A)が別の画面(B)に変更されます。ユーザーが画面上に指を(1秒間)押し続けると、画面Bには画面(A)のボタンと重なるボタンがあり、画面Bのボタンは意図しないタッチを受けて、想定されていないアクションを呼び出します起こる...ボタンの長時間タッチ時に未成年者の発砲を防ぐ

これを防ぐにはどうすればよいですか?

+0

しかし、ユーザーが画面Aにボタンを保持している場合、ユーザーがボタンを離れるまではクリックは実行されません。それはあなたには当てはまりませんか? – CodingYoshi

+0

いいえ、ユーザーが画面に触れても放置しない - ユーザーがまだ触れる場所に正確に別のボタンがある別の(UserControl)フォームに変更され、そのボタンで「タッチ/クリック」が発生する... –

+0

これを引き起こしているイベントは何ですか?コード内では、ボタンのclckイベントなのですか他のイベントですか? – CodingYoshi

答えて

0

これは奇妙な動作です。これをテストするためのタッチデバイスはありませんが、通常のシナリオではclickは、ボタンが押されたときにトリガーされ、ボタンがまだフォーカスの状態にある間に解放されます。ボタンを押しても離さないと、clickイベントは発生しません。

あなたができることは、ボタンを押してからフォーカスが失われたときにのみ画面Bを表示することです。このように:私はLeaveイベントハンドラのコードは、ボタンは、それがクリックされない場合でも、フォーカスを失うたびに実行されていないbuttonIsClickedを使用しているよう

private bool buttonIsClicked = false; 
private void button1_Click(object sender, EventArgs e) 
{ 
    this.buttonIsClicked = true; 

} 
private void button1_Leave(object sender, EventArgs e) 
{ 
    if (this.buttonIsClicked) 
    { 
     this.buttonIsClicked = !this.buttonIsClicked; 
     // show screen B 
    } 
} 

は、変数を使用してください。

+0

私はそれを試みます - 私もそのようなことを考えていました - 問題はタッチスクリーンもありません - クライアントからのレポートに基づいています。 また、私はMSのサイトでこれを見つけました:画面をタップし、マウスアイコンが現れて消えるまで押し続けます。ユーザーは不慮の事故を起こした場合にこれを行う可能性が高く、タップするだけに戻す必要があります。 ペンを持ち上げたときにISG_TAPが送信されます。 実際に私はあなたが示唆したことをすることができません:スクリーンAのクリックは一連のイベントとハンドラーにつながり、スクリーンBはウェブサービスからの特定の応答が成功した場合にのみ表示されます... –

関連する問題