View Full Version : سوال: عدم ترتیب اثر کلید ها در فرم Windows Forms Application
ROSTAM2
چهارشنبه 20 تیر 1403, 20:24 عصر
سلام.
من یک پنجره در WinForms دارم که کلید هاش سفارشی و Net Framework. نیست و جز دو تا برچسب و یک Panel و همون 3 تا کلید سفارشی شیء دیگه ای نداره و کلیدها رو هم نمی شه به خصوصیات AcceptButton و CancelButton از پنجره معرفی کرد. مشکل این فرم اینجاست که نمی شه از کلیدهای KeyBoard برای اجرای دستورات کمک گرفت.
155860
پیشنهادتون برای اجرای دستورات با استفاده از کلیدهای کیبورد (کلیدهای Enter و Escape) چیه؟!
155861
Private Sub Dialog_KeyUp(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
Select Case e.KeyCode
Case Keys.Return
Call OK_Button_ButtonClicked(OK_Button)
e.Handled = True
Case Keys.Escape
Call Cancel_Button_ButtonClicked(Me.Cancel_Button)
e.Handled = True
End Select
End Sub
mazoolagh
پنج شنبه 21 تیر 1403, 11:59 صبح
سلام و روز خوش
الان این Dialog_KeyUp که اجرا
و کلیدهم درست تشخیص داده میشه؟
احتمالا اون OK_Button_ButtonClicked و Cancel_Button_ButtonClicked اجرا نمیشن.
اگر این کلیدها همونجور که حدس میزنم کنترل html و درون کنترل وب بروزر هستن،
احتمالا برای این که کلیک رو به کد دات نت بفرستین اونها رو friend withevents تعریف کردین.
فکر کنم این روند یکطرفه اس،
یعنی درسته که با کلیک روی دکمه html این روتین اجرا میشه،
ولی اجرای اون باعث کلیک دکمه html نمیشه.
شما اینجوری عمل کنین:
DIM OK_BUTTON AS HTMLBUTTON= WEBBROWSER.document.getelementbyid("ok_button_id")
OK_BUTTON.invokemember.click
====
پ.ن:
1- امیدوارم درست گرفته باشم مطلب رو.
2- شاید بهتر باشه کلید tab رو هم در نظر بگیرین که focus بین کلیدها بچرخه،
و enter همون کلیدی رو که فوکوس هست کلیک کنه.
ROSTAM2
پنج شنبه 21 تیر 1403, 20:23 عصر
سلام و روز خوش
الان این Dialog_KeyUp که اجرا
و کلیدهم درست تشخیص داده میشه؟
احتمالا اون OK_Button_ButtonClicked و Cancel_Button_ButtonClicked اجرا نمیشن.
اگر این کلیدها همونجور که حدس میزنم کنترل html و درون کنترل وب بروزر هستن،
احتمالا برای این که کلیک رو به کد دات نت بفرستین اونها رو friend withevents تعریف کردین.
فکر کنم این روند یکطرفه اس،
یعنی درسته که با کلیک روی دکمه html این روتین اجرا میشه،
ولی اجرای اون باعث کلیک دکمه html نمیشه.
شما اینجوری عمل کنین:
DIM OK_BUTTON AS HTMLBUTTON= WEBBROWSER.document.getelementbyid("ok_button_id")
OK_BUTTON.invokemember.click
====
پ.ن:
1- امیدوارم درست گرفته باشم مطلب رو.
2- شاید بهتر باشه کلید tab رو هم در نظر بگیرین که focus بین کلیدها بچرخه،
و enter همون کلیدی رو که فوکوس هست کلیک کنه.
سلام.
مشکل از خود فرم و رویدادهاش هست:
Private Sub Dialog_KeyUp(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
Select Case e.KeyCode
Case Keys.Return
'Call OK_Button_ButtonClicked(OK_Button)
'e.Handled = True
MsgBox("Ok")
Case Keys.Escape
MsgBox("Cancel")
'Call Cancel_Button_ButtonClicked(Me.Cancel_Button)
'e.Handled = True
End Select
End Sub
در صورتی که شیئی داشته باشه که ورودی بگیره مثل TextBox رویدادها عمل می کنه! البته اونم باید همون شیء Focus باشه
ROSTAM2
پنج شنبه 21 تیر 1403, 20:56 عصر
با تغییر برچسب آدرس به یک TextBox موضوع حل شد ولی چندان جالب به نظر نمی آد
155862
Private Sub CustomButton1_ButtonClicked(sender As MDF_Production_Unit.CustomButton) Handles CustomButton1.ButtonClicked
With New FolderBrowserDialog With {.Description = "پوشه محل ذخیره سازی اطلاعات را تعیین و کلید OK را کلیک کنید...."}
If Me.DirectoryPathBox.Text.Length > 0 Then .SelectedPath = Me.DirectoryPathBox.Text
If .ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then
Me.DirectoryPathBox.Focus()
Exit Sub
End If
Me.DirectoryPathBox.Text = .SelectedPath
End With
End Sub
Private Sub DirectoryPathBox_GotFocus(sender As Object, e As System.EventArgs) Handles DirectoryPathBox.GotFocus
Me.DirectoryPathBox.SelectionStart = Me.DirectoryPathBox.TextLength
End Sub
Private Sub DirectoryPathBox_TextChanged(sender As Object, e As System.EventArgs) Handles DirectoryPathBox.TextChanged
Me.DirectoryPathBox.Focus()
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.