PDA

View Full Version : چطور بفهمیم روی titel bar فرم کلیک شده. یا فرم در حال درگ شدن هست.



barbodsoft.com
دوشنبه 12 اردیبهشت 1390, 15:14 عصر
سلام دوستان.
چطور بفهمیم روی titel bar فرم کلیک شده. یا فرم در حال درگ شدن هست. توجه داشته باشید که من می خوام تشخیص بدم که فرم در حال درگ شدن هست نه اینکه درگ شده. فرق زمان حال و گذشته.

barbodsoft.com
سه شنبه 13 اردیبهشت 1390, 12:31 عصر
کسی نمی دونه؟

Ali408
چهارشنبه 14 اردیبهشت 1390, 04:11 صبح
سلام دوست عزیز برای اینکه بفهمی روی نوار عنوان فرم کلیک شده یا نه می تونی از رویداد کلیک فرم استفاده کنی البته باید اول مختصات نوار عنوان رو بدست بیاری.

barbodsoft.com
چهارشنبه 14 اردیبهشت 1390, 11:26 صبح
سلام دوست عزیز برای اینکه بفهمی روی نوار عنوان فرم کلیک شده یا نه می تونی از رویداد کلیک فرم استفاده کنی البته باید اول مختصات نوار عنوان رو بدست بیاری.

به این راحتی بود که خودم بلد بودم. رویداد کلیک برای نوار عنوان کار نمی کنه دوست عزیز.

AMIBCT
چهارشنبه 14 اردیبهشت 1390, 14:49 عصر
بايد تابع WndProc پنجره‌ي فعلي رو Overload كنيد و پيام‌ها رو خودتون پردازش كنيد

يه پيام هست كه موقع كليك شدن به پنجره ارسال مي‌شه ولي دات نت رخدادي براش تعريف نكرده چون كار معمولي نيست

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private const long WM_NCLBUTTONDOWN = 0xA1;//161
private const long WM_NCLBUTTONUP = 0xA0;//160

protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCLBUTTONDOWN)
{
if (this.Opacity != 0.5)
{
this.Opacity = 0.5;
}
}
if (m.Msg == WM_NCLBUTTONUP)
{
if (this.Opacity != 1.0)
{
this.Opacity = 1.0;
}
}
base.WndProc(ref m);
}
}
}

http://www.codeproject.com/KB/vb/MouseClickOnTitlebar.aspx?msg=3776311&display=Mobile

barbodsoft.com
چهارشنبه 14 اردیبهشت 1390, 15:48 عصر
کد شما رو به این شکل تبدیل کردم. حالا اصلا رویدا کلیک کار نمی کنه. چطور باید از این کد استفاده کنم.


Imports System.Windows.Forms

Namespace WindowsFormsApplication1
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Const WM_NCLBUTTONDOWN As Long = &HA1
'161
Private Const WM_NCLBUTTONUP As Long = &HA0
'160
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NCLBUTTONDOWN Then
If Me.Opacity <> 0.5 Then
Me.Opacity = 0.5
End If
End If
If m.Msg = WM_NCLBUTTONUP Then
If Me.Opacity <> 1.0 Then
Me.Opacity = 1.0
End If
End If
MyBase.WndProc(m)
End Sub

Private Sub InitializeComponent()
Me.SuspendLayout()
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub
End Class
End Namespace

barbodsoft.com
جمعه 16 اردیبهشت 1390, 14:52 عصر
کسی نیست به من جواب بده؟