タイトルバーをドラッグしてフォームを移動しているときに、winform の不透明度を 50% のような値に設定し、マウスの左ボタンを離したら不透明度を 100% にリセットするにはどうすればよいですか。
thinktank
質問する
335 次
3 に答える
3
興味深いことに、OnResizeBeginおよびOnResizeEndオーバーライドでも実行できます。これは、フォームの移動とサイズ変更の両方に適用されます。
サイズ変更時ではなく、移動時にのみ不透明度を変更したい場合は、alexの答えの方が適しています。
于 2009-07-29T14:47:25.470 に答える
2
コード例は次のとおりです。
public partial class Form1 : System.Windows.Forms.Form
{
private const long BUTTON_DOWN_CODE = 0xa1;
private const long BUTTON_UP_CODE = 0xa0;
private const long WM_MOVING = 0x216;
static bool left_button_down = false;
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
//Check the state of the Left Mouse Button
if ((long)m.Msg == BUTTON_DOWN_CODE)
left_button_down = true;
else if ((long)m.Msg == BUTTON_UP_CODE)
left_button_down = false;
if (left_button_down)
{
if ((long)m.Msg == WM_MOVING)
{
//Set the forms opacity to 50% if user is moving
if (this.Opacity != 0.5)
this.Opacity = 0.5;
}
}
else if (!left_button_down)
if (this.Opacity != 1.0)
this.Opacity = 1.0;
base.DefWndProc(ref m);
}
}
于 2009-07-29T14:46:40.760 に答える
2
フォームの WndProc でWM_NCLBUTTONDOWNに応答してForm.Opacityを 0.5 に設定します。
次に、 WM_NCLBUTTONUPを受信したら Opacityを 1.0 に設定します。
于 2009-07-29T14:40:13.643 に答える