2017-03-22 7 views
0

私自身のデザインでユーザーコントロールを作成するには、何か助けが必要です。私はユーザーコントロールを作成し、ほぼ完了しました。私はタブキーを(実行時に、時間を設計していない)を押して、私のユーザーコントロールを集中した場合、それに描か迷惑な長方形(黒)がある
:それはC#Tabulatorキーを押してフォーカスしている黒い矩形

私の問題...のみビット磨く必要があります。

これは私の現在の「解決策」です。
矩形を右のブラシで単に上書きします。それは上のOnPaintイベントによって描かれる - この作品ではない理由を

private void ButtonOnPaint(object sender, PaintEventArgs e) 
{ 
    if (Image != null | BackgroundImage != null) 
     return; 

    var penColor = Color.Transparent; 

    if (!_mouseCurrentMoveOver) 
     penColor = BackgroundColor; 
    else if (_mouseCurrentMoveOver) 
     penColor = MouseOverBackColor; 

    if (_mouseCurrentDown) 
     penColor = MouseDownBackColor; 

    if (penColor == Color.Transparent) 
     return; 

    using (var p = new Pen(penColor)) 
    { 
     var startPoint = new Point(5, 5); 
     var sizeRectangle = new Size(
      _button.Width - startPoint.X * 2 - 1, 
      _button.Height - startPoint.Y * 2 - 1); 

     e.Graphics.DrawRectangle(p, startPoint.X, startPoint.Y, sizeRectangle.Width, sizeRectangle.Height); 
    } 
} 

理由は、私は背景画像を設定した場合、です。

ですから、このフォーカス矩形を無効にするにはどうすればよいですか?あなたはこれが例えばによりユーザーコントロール内のコントロールを選択する機能を無効にします

SetStyle(ControlStyles.Selectable, false); 

を呼び出すことができ、ユーザーコントロールのコンストラクタで

+0

inti [this on showfocuscues](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.showfocuscues%28v=vs.110%29.aspx)を見たい場合があります。 ) – TaW

+0

これを試すことができます: 'protected override bool ShowFocusCues { get { return false; } } ' – TaW

+0

このヒントのおかげで、私はこれを試しましたが、何も変わらない...? –

答えて

0

タブ移動。それがあなたが保持したい関数なら、この解決策はあなたのためには機能しません。

+0

まあ、私は彼がfocuesを持つ能力を維持したいと思うとjuastは手掛かりを取り除く.. – TaW

+0

@TaWこれは本当かもしれません。 MouseOverエフェクトなどが得られることを考えれば、これは彼のために働くかもしれません。とにかくマーキングなしでタブ選択を使用するのは難しいでしょう。 – Jens

+0

@ Jens:タブで選択する機能が利用可能になるはずです...あなたの提案は非常に面白いです - これをありがとう! - しかし、これは動作しません:) –

関連する問題