2011-01-30 12 views
0

ボタン用の画像があります。私は画像のためのフラットボタンを使用しました。デフォルトでは、標準ボタンでマウスをクリックするかボタンの上に置いたままにすると、ウィンドウボタンの背景イメージが変化します。しかし、マウスのホールドイベントで背景イメージを変更したい。C#でmouseholdイベントのウィンドウの背景を変更する

私は、Visual Studioを使用しています2008年

答えて

3

前後に背景を変更するMouseDownMouseUpイベントを使用します。

private void btn_MouseDown(object sender, MouseEventArgs e) 
{ 
    //Replace with the appropriate control/image/color change: 
    btn.BackColor = Color.Black; 
} 

private void btn_MouseUp(object sender, MouseEventArgs e) 
{ 
    //As mentioned above 
    btn.BackColor = SystemColors.Control; 
    //Show the MsgBox here 
    MessageBox.Show("The background is fine!"); 
} 
+0

の構文です:btn.BackgroundImage =は?????それはbtn.BackgroundImage = "C:\\ image.png"または何ですか? – saaZ

+0

ok私はそれを持っていますbtn.BackgroundImage =新しいビットマップ(ソース);しかし、ボタンクリックでメッセージボックスを表示すると問題が発生します。ボタンは正常に戻りません。ボタンのクリックイベントから派生したメッセージボックスを閉じるときにのみ発生します。 – saaZ

+0

@saaZ:色を変更した後にMessageBoxを表示し、MouseDownイベントでそれを行います。私の答えが更新されました。 – Shimmy

-1

私はあなたがリサイズを使用している場合、これは行うことは非常に複雑になると思います - あなたがwinformsとしてそれをタグ付けしたように、あなたはおそらくそれを行います。私はwinformsでこれを達成するための独自のコントロールを定義する必要があり、それはあなたに多くの時間と神経を要すると思います。代わりに、mousedownイベントとmouseupイベントを使用することもできますが、何か他のものを変更したい場合、その方法はそれほど柔軟性がありません。

ただし、WPFを使用する必要はないが、WPFを使用することもできますが、WPFはそのために設計されているため、いくつかの可能性があります。独自のスタイルとテンプレートを定義して、コントロールの外観を変更することができます。マウス・ホールド・イベントの色を変更するには、トリガーを使用します。テンプレートの詳細については、次のページを参照してください。click

+0

私はwinformsでこれを達成することは困難であることは間違っていると言います。その後、元の投稿がタグに基づいてwinformsを明確に要求して以来、WPFでそれを行う方法を示しています。 – DarkUrse

0

私はポルトガル語ですので、「私の英語」のために私を許してください。

イメージを2つ作成します。

Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave 



    'out the button 

End Sub 



Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove 



    'In the button 

    Button1.BackgroundImage = ImageList2.Images(1) 
End Sub 
関連する問題