2016-11-02 6 views
0

フォームがフォーカスされていない場合、フォーム上のRichTextBox内のハイパーリンクをクリックしてもクリックイベントは発生しません。私は2回クリックする必要があります。これは設計によるものですか?バグの場合は、最も洗練されたソリューションは何ですか?私はフォームがフォーカスされているかどうかにかかわらず、ワンクリックでクリックイベントを発生させたい。RichTextBoxハイパーリンクは、フォームがフォーカスされていないときにクリックイベントを発生させません。

答えて

0

リッチテキストボックスのマウスのホバーイベントを使用することができます。このように、

private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) 
     { 
      MessageBox.Show(e.LinkText); 
     } 

private void richTextBox1_MouseHover(object sender, EventArgs e) 
     { 
      this.Focus(); 
     } 

結果

は、

enter image description here

希望に役立ちます、(私ははっきりと。ところであなたは、フォームのヘッダから追跡することができ、フォームのTopMostのプロパティがフォーカスを表示する場合はtrueまたは設定されていません)

+0

これはうまくいくが、ユーザーがリンク上を単に移動し、フォームが誤ってフォーカスを取得したときに望ましくない影響を及ぼすことはできないだろうか? –

+0

フォームがフォーカスを失っているため、richtextboxを2回クリックする必要があります。このソリューションでは、richtextbox上にカーソルを置くと自動的にフォームがフォーカスされます。はい、ホバリングだけがフォーカスしますが、そうでなければ自分でフォームにフォーカスする必要があります。 @敗者 – Berkay

0

は、単にフォームがでていないので、あなたが二回クリックする必要があり

0

....私はあなたがそうええ、そのようなやって何かが動作するはずのイベントを入力して、マウスを知っていると確信している

Mouse_Enter 
form1.getfocus 

を使用しますフォーカス;最初にクリックするとフォームにフォーカスが移り、もう1つが RichTextBoxコントロールの LinkClickedイベントを起動します。

マウスカーソルが境界内に入ると、フォーカスするようにフォームを設定できます。フォームにフォーカスがある間、

MouseEnter += (s, e) => Focus(); 

は、ハイパーリンクがクリックされ、そして必要に応じてLinkClickedイベントは、最初のクリックから発生します。フォームのコンストラクタに次のコードを追加します。

関連する問題