نمایش نتایج 1 تا 3 از 3

نام تاپیک: چطور براری منوی سفارشی کلید ALT را غیر فعال کنم؟!

  1. #1
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    2,010

    Question چطور براری منوی سفارشی کلید ALT را غیر فعال کنم؟!

    سلام من ی ToolStripMenuItem سفارشی ساختم برای فیلد های جستجوی دقیق که زمان تغییر زبان با کلید Alt + Shift DropDown از منوی اصلی بسته می شه! که من می خوام بسته نشه....پ

    Screenshot 2024-09-28 163815.jpg

    من برای KeyDown در خود UserControl و همچنین ToolStripControlHost و جعبه متن کد نوشتم برای شناسایی کلید Alt ولی رویدادشون کارگر نبود:


    Select Case e.KeyCode
    Case Keys.Alt
    MsgBox("alt")
    End Select


    خال سوال ایجاست که چطور می شه از بسته شدن DropDown در زمان استفاده از کلید Alt جلوگیری کرد؟!

  2. #2

    نقل قول: چطور براری منوی سفارشی کلید ALT را غیر فعال کنم؟!

    اینو تست کن
           private bool altPressed;
    private void ContextMenuStrip1_Closing(object? sender, ToolStripDropDownClosingEventArgs e)
    {
    if (e.CloseReason == ToolStripDropDownCloseReason.Keyboard && altPressed)
    {
    e.Cancel = true;
    altPressed = false;
    }
    }

    private void ContextMenuStrip1_PreviewKeyDown(object? sender, PreviewKeyDownEventArgs e)
    {
    if (e.Alt)
    {
    altPressed = true;
    }
    else
    {
    altPressed = false;
    }
    }

    کد مشخصه، خودتون تبدیل کنید به vb

  3. #3
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    2,010

    نقل قول: چطور براری منوی سفارشی کلید ALT را غیر فعال کنم؟!

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    اینو تست کن
           private bool altPressed;
    private void ContextMenuStrip1_Closing(object? sender, ToolStripDropDownClosingEventArgs e)
    {
    if (e.CloseReason == ToolStripDropDownCloseReason.Keyboard && altPressed)
    {
    e.Cancel = true;
    altPressed = false;
    }
    }

    private void ContextMenuStrip1_PreviewKeyDown(object? sender, PreviewKeyDownEventArgs e)
    {
    if (e.Alt)
    {
    altPressed = true;
    }
    else
    {
    altPressed = false;
    }
    }

    کد مشخصه، خودتون تبدیل کنید به vb
    سلام مجدد

    این کدی که هست می شه برای DropDown از یک ToolStripDropDownButton به این شکل استفاده کرد که کار نرم افزار من رو راه انداخت:

    ابتدا یک متغیر برای صدا زدن DropDown از آیتم ToolStripDropDownButton در بخش تعاریف یا Declaration از کلاس ساختم:


    Protected Friend WithEvents FilterDropDown As ToolStripDropDown


    و از بخش اشیاء اون رو انتخاب و رویدادهای موردنظر رو انتخاب و این کدها رو براشون نوشتم:


    Private Sub FilterDropDown_Closing(sender As Object, e As System.Windows.Forms.ToolStripDropDownClosingEvent Args) Handles FilterDropDown.Closing
    If e.CloseReason = ToolStripDropDownCloseReason.Keyboard AndAlso UserClose = False Then
    e.Cancel = True
    End If
    End Sub


    Private Sub FilterDropDown_Opened(sender As Object, e As System.EventArgs) Handles FilterDropDown.Opened
    Me.UserClose = False
    End Sub


    و برای UserControl یک کلید Close اضافه کردم که بصوزت مدیریت شده بسته بشه برای اینکه کلید Escape رو هم از کار میندازه (چرا نمی دونم!!!!)

    Screenshot 202224-09-30 124006.jpg

    برای UserControl رویداد Close ساختم:

    Event Close()


    از رویداد Click از کلید Close استفاده کردن برای Raise کردن رویداد مدنظر:

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    RaiseEvent Close()
    End Sub


    در نهایت آیتم سفاذشی که وراثت از ToolStripControlHost داره رو هم بهش رویداد اضافه کردم:

    Public Class FilterBox
    Inherits ToolStripControlHost
    Event SearchButtonClicked(P As PersonInfo)
    Event Close()
    Sub New()


    MyBase.New(New NameValueControl)
    Me.BoxValue = Me.Control
    End Sub
    Private WithEvents BoxValue As NameValueControl
    Public ReadOnly Property Box() As NameValueControl
    Get
    Return Me.BoxValue
    End Get
    End Property


    Private Sub BoxValue_Close() Handles BoxValue.Close
    RaiseEvent Close()
    End Sub

    Private Sub BoxValue_SearchButtonClicked(P As PersonInfo) Handles BoxValue.SearchButtonClicked
    RaiseEvent SearchButtonClicked(P)
    End Sub


    End Class


    و در کلاس فرم اصلی به این شکل به ToolStripDropDownButton اضافه کردم:

    Dim WithEvents FilterBox As New FilterBox
    Sub CreateFilterBoxes()


    With Me.FilterDropDownButton.DropDownItems
    .Insert(0, FilterBox)


    End With
    End Sub



    Private Sub MainForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'Me.SelectedPage = ApplicationPages.StartPage
    CreateFilterBoxes()


    و رویداد Close زو صدا زدم و این کد رو براش نوشتم :

    Private Sub FilterBox_Close() Handles FilterBox.Close
    UserClose = True
    Me.FilterDropDownButton.DropDown.Close()


    End Sub


    با تشکر....

تاپیک های مشابه

  1. غیر فعال کردن جستجوی وب از منوی Start در Windows 11
    نوشته شده توسط elahe4321n در بخش بک لینک (Back Links)
    پاسخ: 0
    آخرین پست: شنبه 03 دی 1401, 10:50 صبح
  2. دپلوی کردن SSIS پکیج روی سرور ریموت و استفاده از یوزر غیر ...
    نوشته شده توسط Touska در بخش SQL Server Integration Services - SSIS
    پاسخ: 1
    آخرین پست: دوشنبه 18 بهمن 1395, 21:13 عصر
  3. سوال: غیرفعال شدن یک دکمه بعد از کلیک برروی آن
    نوشته شده توسط sadegh1944 در بخش Access
    پاسخ: 10
    آخرین پست: دوشنبه 25 شهریور 1392, 19:35 عصر
  4. پاسخ: 3
    آخرین پست: پنج شنبه 15 تیر 1391, 21:14 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •