2010-11-24 12 views

答えて

1

ToolStripComboBoxは、その基礎となるComboBoxコントロールを適切にComboBox propertyという名前で公開しています。これにより、ToolStripComboBoxにラップされていないプロパティ、メソッド、およびイベントにアクセスすることができます。

そして、標準ComboBoxコントロールは、コンボボックスにフォーカスがある間にマウスホイールがスクロールされるたびに発生するMouseWheel eventを公開します。

は一緒にこれら二つのものを置く、我々はToolStripComboBoxコントロールの基になるComboBoxコントロールのMouseWheelイベントのハンドラを追加し、そのデフォルトの動作をオーバーライドすることができます。

だから、あなたはToolStripToolStripComboBoxを含むフォームを持っていると仮定すると、次のコードのようなものを使用することができます。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     //Attach a handler for the MouseWheel event 
     ToolStripComboBox1.ComboBox.MouseWheel += new MouseEventHandler(ToolStripComboBox_MouseWheel); 
    } 

    private void ToolStripComboBox_MouseWheel(object sender, MouseEventArgs e) 
    { 
     //Cast the MouseEventArgs to HandledMouseEventArgs 
     HandledMouseEventArgs mwe = (HandledMouseEventArgs)e; 

     //Indicate that this event was handled 
     //(prevents the event from being sent to its parent control) 
     mwe.Handled = true; 
    } 
} 

また、もちろん、あなたは常に既存のToolStripComboBoxコントロールをサブクラス化でき、上に示したのと同じ方法でその動作を上書きします。

+0

はそんなにありがとう期待どおりに動作しますので、選択を変更しないホイールとのコンボボックスをドロップ!それは完璧に動作するはずです:) – raz3r

+0

@ raz3r:あなたは大歓迎です;私は助けることができてうれしいです。これは本当に良い質問ですが、すばらしいGoogle検索では回答が得られません。 –

+0

もう一度ありがとう、それは働いた! – raz3r

0

コーディーグレイが示唆したことに加えて、コンボボックスを落としたときにホイールスコーリングが機能するようにすることができます。ただ、マウスホイールハンドルにDroppedDown状態をchech:


    public class MyToolStripComboBox : ToolStripComboBox 
    { 
     public MyToolStripComboBox() 
     { 
      this.ComboBox.MouseWheel += new MouseEventHandler(ComboBox_MouseWheel); 
     } 

     void ComboBox_MouseWheel(object sender, MouseEventArgs e) 
     { 
      if (!this.ComboBox.DroppedDown) 
       ((HandledMouseEventArgs)e).Handled = true; 
     } 
    } 

をスクロールが

関連する問題