উইন্ডোজ ফর্মটি যখন ছোট করা হচ্ছে তখন কীভাবে সনাক্ত করবেন?


86

আমি জানি যে আমি উইন্ডোস্টেটের মাধ্যমে বর্তমান অবস্থা পেতে পারি, তবে আমি জানতে চাই যে ব্যবহারকারী যখন ফর্মটি ন্যূনতম করার চেষ্টা করবে তখন কোনও ঘটনা ঘটবে কিনা।

উত্তর:


122

আপনি পুনরায় আকার দিন ইভেন্টটি ব্যবহার করতে পারেন এবং ইভেন্টের ফর্মগুলি W উইন্ডোস্টেট সম্পত্তিটি পরীক্ষা করতে পারেন।

private void Form1_Resize ( object sender , EventArgs e )
{
    if ( WindowState == FormWindowState.Minimized )
    {
        // Do some stuff
    }
}

4
নোট করুন যে এটি সেই জায়গাগুলির মধ্যে একটি বলে মনে হয় যেখানে ব্যতিক্রমগুলি গ্রাস করা যায়
জোনাথন রাইনহার্ট

4
আপনার এটিরও দরকার R নতুন আকারের = = নতুন সিস্টেম.এভেন্টহ্যান্ডলার (এটি F ফর্ম 1_ রিসাইজ);
টম

80

ফর্মটি ছোট করার আগে প্রবেশ করতে আপনাকে ডাব্লুড্রপ্রোক পদ্ধতিতে ডুবে যেতে হবে:

    private const int WM_SYSCOMMAND = 0x0112;
    private const int SC_MINIMIZE = 0xF020; 

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    protected override void WndProc(ref Message m)
    {
        switch(m.Msg)
        {
            case WM_SYSCOMMAND:
                int command = m.WParam.ToInt32() & 0xfff0;
                if (command == SC_MINIMIZE)
                {
                    // Do your action
                }
                // If you don't want to do the default action then break
                break;
        }
        base.WndProc(ref m);
    }

অন্যান্য উত্তরগুলি উল্লেখ করার সাথে ফর্মটি ইভেন্টের মধ্যে হুক হ্রাস করার পরে প্রতিক্রিয়া জানাতে Resize(সম্পূর্ণতার জন্য এখানে অন্তর্ভুক্ত করা হয়েছে):

private void Form1_Resize (object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        // Do your action
    }
}

0xF030 হ'ল সাধারণ উইন্ডো অবস্থা থেকে সর্বাধিকীকরণ করা হয়। 0xF120 উইন্ডোজ বার থেকে সর্বাধিকীকরণ করা হয়
k4yaman

আসলে, এটি কেবল মিনিমাইজ ক্লিক ইভেন্টটি ধরে! আপনি যা খুঁজছেন তা হ'ল ডাব্লুএমআইএসআইআইজেড (0x0005) এবং এসআইজেডমিনিমিজড (1)
ওরি নাচুম

17

আমি কোনও নির্দিষ্ট ইভেন্টের কথা জানি না , তবে Resizeফর্মটি ন্যূনতম করা হলে ইভেন্টটি ছড়িয়ে পড়ে, আপনি FormWindowState.Minimizedসেই ইভেন্টটির জন্য পরীক্ষা করতে পারেন


4
এটি একটি প্রাইভেট "লাস্টস্টেট" পতাকার সাথে মিলিত এটি সম্পর্কে যাওয়ার সহজতম উপায়।
ম্যাথু শার্লে

7

যারা ডাব্লুপিএফ উইন্ডোগুলি মিনিমাইজিং ইভেন্টগুলির জন্য অনুসন্ধান করেন তাদের জন্য:

এটি কিছুটা আলাদা। কলব্যাকের জন্য উইন্ডোস্টেট ব্যবহার করুন:

private void Form1_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        // Do some stuff
    }
}

ব্যবহারের ইভেন্টটি স্টেটচেনজড (পরিবর্তে পুনরায় আকার দিন):

public Main()
{
    InitializeComponent();
    this.StateChanged += Form1_Resize;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.