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

نام تاپیک: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

  1. #1
    کاربر دائمی آواتار az.heidarzadeh
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    Iran-Mashhad
    پست
    241

    Question فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    سلام
    من دکمه close فرم رو با این کد غیر فعال کردم


    private const int SC_CLOSE = 0xF060;
    private const int MF_GRAYED = 0x1;
    [DllImport("user32.dll")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
    [DllImport("user32.dll")]
    private static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable);

    private void MsgBoxForm_Load(object sender, EventArgs e)
    {
    if (MessageBox.status)
    {
    EnableMenuItem(GetSystemMenu(this.Handle, true), SC_CLOSE, MF_GRAYED);
    }
    else
    {
    EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_GRAYED);
    }
    }

    اما دیگه نمیتونم فعالش کنم همونطور که میبینید فکر کردم شاید اون متغیر boolean تاثیر داشته باشه که نداشت پس فکر کنم باید یه ثابت برای اونم باشه، لطفا کسی چیزی میدونه باید چیکارش کنم؟...

    ---------------------------------------------------------------------------------------------------------------

    سلام به همه دوستای گلم بالاخره مشکل من حل شد البته با تشکر مخصوص از دوست خوبم B.I.O.H.A.Z.A.R.D فکر کنم مشکل همون ویندوز بود ایشون درست میگفتند کدی که به من دادند بدون مشکل کار میکنه خیلی خوشحالم
    خب این همه تلاش برای درست کردن یه messagebox فارسی بود که البته نمونه هاش زیاده اما من میخواستم دقیقا مثل خود .net باشه فقط فارسی، مثل توجه به اینکه وقتی YesNo داری نباید بتونی کنسلش کنی واسه همین میخواستم دکمه close فرمم رو ببندم (تا جایی که دیدم بقیه دوستان به این نکته توجه نکردند ) و توی مواردی که cancel دارم دکمه close فعال باشه اینم لینک دانلودش
    Farsi MessageBox.zip
    آخرین ویرایش به وسیله az.heidarzadeh : چهارشنبه 20 مهر 1390 در 11:26 صبح

  2. #2
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    من به این سوال شما جواب دادم. ولی متاسفانه مدیر محترم خیلی راحت کل تاپیک رو پاک کرد.

    اینم جواب شما:

    غیر فعال کردن دکمه close

    IntPtr hMenu = GetSystemMenu(this.Handle, false);

    int menuItemCount = GetMenuItemCount(hMenu);

    RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);


    فعال کردن مجدد دکمه close :

    IntPtr hMenu = GetSystemMenu(this.Handle, true);

    int menuItemCount = GetMenuItemCount(hMenu);

    RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);

  3. #3
    کاربر دائمی آواتار az.heidarzadeh
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    Iran-Mashhad
    پست
    241

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    خیلی ممنون که جواب دادید بله متاسفانه قبل از اینکه من پاسخ شما رو ببینیم مدیر محترم حذفش کرده بود و این در صورتیه که واقعا من نتونسته بودم این جواب و پیدا کنم
    بهرحال من فکر کنم همونجا گفته بودم به ذهن خودم هم رسید که false رو true کنم اما جواب نداد یا شاید کار دیگه ای قبلش باید انجام بدم؟...

  4. #4
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    نقل قول نوشته شده توسط az.heidarzadeh مشاهده تاپیک
    خیلی ممنون که جواب دادید بله متاسفانه قبل از اینکه من پاسخ شما رو ببینیم مدیر محترم حذفش کرده بود و این در صورتیه که واقعا من نتونسته بودم این جواب و پیدا کنم
    بهرحال من فکر کنم همونجا گفته بودم به ذهن خودم هم رسید که false رو true کنم اما جواب نداد یا شاید کار دیگه ای قبلش باید انجام بدم؟...
    خب من که براتون نوشتم چطور فعال یا غیر فعال کنید. من الان از همین کد استفاده میکنم توی یه پروژه نمونه. اصلا پروژه رو میذارم ببینید.
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار az.heidarzadeh
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    Iran-Mashhad
    پست
    241

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    والا نمیدونم شاید یه مشکلی تو سیستم من هست آخه پروزه شما هم درست کار نمیکنه Disable دکمه close فرم رو غیر فعال میکنه اما دکمه Enable اونو به حالت اول برنمیگردونه...

  6. #6
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    نقل قول نوشته شده توسط az.heidarzadeh مشاهده تاپیک
    والا نمیدونم شاید یه مشکلی تو سیستم من هست آخه پروزه شما هم درست کار نمیکنه Disable دکمه close فرم رو غیر فعال میکنه اما دکمه Enable اونو به حالت اول برنمیگردونه...
    نمیدونم والا مشکل چیه. ویندوزتون چیه؟

    واسه من هر جفتش درست کار میکنه.

  7. #7
    کاربر دائمی آواتار az.heidarzadeh
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    Iran-Mashhad
    پست
    241

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    ویندوزم 7 و vs2005 البته sample شما با vs2010 بود که هیچ کدومش کار نمیکنه... please چیکار کنم خیلی میخوامش نمونه کد دیگه ای ندارید؟...

  8. #8
    کاربر دائمی آواتار Xcalivorse
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    Kernel32.dll
    پست
    411

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    اگر نیازی یه دکمه های Minimize و Maximize ندارید میتونید خاصیت ControlBox فرمتون رو False کنید. در غیز این صورت از کدهایی که دوستان گذاشتن بدون مشکل میشه استفاده کرد.

  9. #9
    کاربر دائمی آواتار B.I.O.H.A.Z.A.R.D
    تاریخ عضویت
    تیر 1388
    محل زندگی
    قزوین
    پست
    198

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    نقل قول نوشته شده توسط az.heidarzadeh مشاهده تاپیک
    ویندوزم 7 و vs2005 البته sample شما با vs2010 بود که هیچ کدومش کار نمیکنه... please چیکار کنم خیلی میخوامش نمونه کد دیگه ای ندارید؟...
    خب از کد هاش توی پروژتون استفاده کنید. متاسفانه نمونه کد دیگه ندارم. هر جا رو هم میگردم همین کد رو گذاشتن

  10. #10
    کاربر دائمی آواتار faravaghi
    تاریخ عضویت
    مهر 1388
    محل زندگی
    مشهد
    پست
    233

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    سلام،
    این کد رو امتحان کن:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    namespace DIC.Snippets
    {
    class FormEnabled
    {
    private const int SC_CLOSE = 0xF060;
    private const int MF_GRAYED = 0x1;
    internal const int MF_ENABLED = 0x0;
    [DllImport("user32.dll")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
    [DllImport("user32.dll")]
    private static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable);
    [DllImport("user32.dll")]
    public static extern int RemoveMenu(int systemMenu, int itemPosition, int flag);
    [DllImport("user32.dll")]
    public static extern int GetMenuItemCount(int systemMenu);
    [DllImport("user32.dll")]
    public static extern int DrawMenuBar(IntPtr currentWindow);
    public void FormCloseEnabled(Form form, bool enabled)
    {
    MethodInvoker method = delegate
    {
    int disable = 2;
    int enable = 1;
    IntPtr menu;
    int itemCount;
    if (enabled)
    {
    EnableMenuItem(GetSystemMenu(form.Handle, false), SC_CLOSE, MF_ENABLED);
    //get the system menu of the application
    menu = GetSystemMenu(form.Handle, false);
    //get the count of menu items in the system menu
    itemCount = GetMenuItemCount(menu.ToInt32());
    //disable the "Close" command in the menu
    RemoveMenu(menu.ToInt32(), itemCount - 1, enable);
    //now draw the menu bar on the application
    DrawMenuBar(form.Handle);
    }
    else
    {
    EnableMenuItem(GetSystemMenu(form.Handle, false), SC_CLOSE, MF_GRAYED);
    //get the system menu of the application
    menu = GetSystemMenu(form.Handle, false);
    //get the count of menu items in the system menu
    itemCount = GetMenuItemCount(menu.ToInt32());
    //disable the "Close" command in the menu
    RemoveMenu(menu.ToInt32(), itemCount - 1, disable);
    //now draw the menu bar on the application
    DrawMenuBar(form.Handle);
    }
    };

    if (form.InvokeRequired)
    form.BeginInvoke(method);
    else
    method.Invoke();
    }
    }
    }


    /***** FORM CODE ******/

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace DIC.Snippets
    {
    public partial class Form1 : Form
    {
    FormEnabled fe;
    public Form1()
    {
    InitializeComponent();
    fe = new FormEnabled();
    }

    private void button2_Click(object sender, EventArgs e)
    {
    fe.FormCloseEnabled(this, true);
    }

    private void button1_Click(object sender, EventArgs e)
    {
    fe.FormCloseEnabled(this, false);

    }
    }
    }

  11. #11
    کاربر دائمی آواتار az.heidarzadeh
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    Iran-Mashhad
    پست
    241

    نقل قول: فعال کردن دکمه close فرم بعد از غیر فعال کردن آن

    نقل قول نوشته شده توسط Xcalivorse مشاهده تاپیک
    اگر نیازی یه دکمه های Minimize و Maximize ندارید میتونید خاصیت ControlBox فرمتون رو False کنید. در غیز این صورت از کدهایی که دوستان گذاشتن بدون مشکل میشه استفاده کرد.
    سلام
    نمیدونم واقعا مشکل کدای من چیه که جواب نمیده، باید روشهای دیگه رو امتحان کنم اما متوجه منظور شما نشدم آره فرم من min, max نداره controlbox فرمم و false کنم یعنی چی یه property شاید من تا حالا دقت نکردم و ندیدمش...

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

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