PDA

View Full Version : سوال: چگونه رویداد (Event) دبل کیلیک (DoubleClick) را برای کمبوباکس (ComboBox) تعریف کنیم



pouyansaraf
سه شنبه 14 دی 1389, 19:00 عصر
با سلام

اگر combobox ما از نوع Simple باشد در بعضی موافع نیاز داریم که از رویداد DoubleClick استفاده کنیم.
در لیست رویداد ها MouseDoubleClick کار نمیکند
با جستجو ، کد زیر را پیدا کردم که اگر زمان دو کلید ما زیر زیر 500 میلی ثابیه باشد به عنوان دبل کلیک در نظر میگیریم.
در رویداد Click کمبوباکس کد زیر را مینویسیم


Static prevClick As DateTime = DateTime.Now
If DateTime.Now.AddMilliseconds(-400) < prevClick Then
LabelPanel2.Text = ComboBoxPanel2.Text
کد مورد نظر برای اجرای دبل کلیک
End If
prevClick = DateTime.Now


حال سوال من اینجا است که من بر حسب نیاز مجبورم که در ابتدای ریختن متغیر ها در این نوع از ComboBox با کد ComboBoxPanel2.SelectedIndex = 0 و ComboBoxPanel2.Focus() مقدار اولیه بدهم
اینجا دیگر آن کد دبل کلیک کمبو باکس من، فقط برای بار اولی که Click میکنم دبل کلیک در نظر میگیرد ولی برای دفعات بعد درست عمل میکند.

از دوستان میخواهم راهنماییم کنید که آیا کد دیگری برای استفاده از DoubleClick در ComboBox وجود دارد و یا اینکه مجبورم الگوریتمم را تغییر دهم
با تشکر

pouyansaraf
سه شنبه 14 دی 1389, 22:42 عصر
یعنی کسی تا بحال با ComboBox و دبل کلیک روی آن کار نکرده

Hossis
سه شنبه 14 دی 1389, 23:22 عصر
اصلا کامبو باکس نیازی به دابل کلیک نداره یعنی به ندرت اتفاق می افته که انسان نیاز به دابل کلیک اون داشته باشه ولی من برای کنترلهای دیگه دابل کلیک و حتی سابل کلیک !! هم درست کردم و درست عمل کرده

Hossis
سه شنبه 14 دی 1389, 23:23 عصر
ان هم کد سه بار کلیک
نیاز به یک تایمر و یک دکمه فرمان داره
امتحانش کن


Dim WithEvents Click3 As New TripleClick
Private Sub Buttolick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Click3.Click()
End Sub
Private Sub Click3_TplClick(ByVal Text As String) Handles Click3.TplClick
TextBox1.Text = Text
End Sub

Public Class TripleClick
Dim WithEvents TMR As New Timers.Timer With {.Interval = 1000, .Enabled = True}
Public Event TplClick(ByVal Text As String)
Dim intCount As Integer = 0
Public Sub Click()
intCount += 1
If intCount >= 3 Then
intCount = 0
RaiseEvent TplClick("The Button was triple clicked.")
End If
End Sub

Private Sub TripleClick_TplClick(ByVal Text As String) Handles Me.TplClick
MsgBox("سه بار کليک شد!")
End Sub

Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles TMR.Elapsed
intCount = 0

End Sub
End Class

pouyansaraf
چهارشنبه 15 دی 1389, 02:50 صبح
Triple click بیشتر به درد انتخاب کلی عبارات در TextBox میخوره، نه combobox

اگر از Simple در combobox استفاده کرده اید منظورم را متوجه میشوید ؛ اگر نه توضیح بدهم.


دوست عزیز حیوانات از کامپیوتر استفاده نمیکنند بهتر است از واژه کاربر بجای انسان استفاده کنید.