উইন্ডোজ ফর্মগুলির জন্য সেরা নকশা যা সাধারণ কার্যকারিতা ভাগ করে নেবে


20

অতীতে, আমি আমার অ্যাপ্লিকেশনটিতে উইন্ডোজ ফর্মগুলির প্রসারিত করার জন্য উত্তরাধিকার ব্যবহার করেছি। আমার সমস্ত ফর্মের যদি সাধারণ নিয়ন্ত্রণ, শিল্পকর্ম এবং কার্যকারিতা থাকে তবে আমি সাধারণ নিয়ন্ত্রণ এবং কার্যকারিতা বাস্তবায়নের জন্য একটি বেস ফর্ম তৈরি করব এবং তারপরে অন্যান্য নিয়ন্ত্রণগুলিকে সেই বেস ফর্মটি থেকে উত্তরাধিকারী করার অনুমতি দেব। তবে, আমি সেই নকশাটি নিয়ে কয়েকটি সমস্যার মধ্যে পড়েছি।

  1. নিয়ন্ত্রণগুলি একবারে কেবলমাত্র একটি ধারকতে থাকতে পারে, সুতরাং আপনার যে কোনও স্থিতিশীল নিয়ন্ত্রণগুলি জটিল হবে। উদাহরণস্বরূপ: ধরুন আপনার বেস ফর্ম নামে একটি বেস ফর্ম রয়েছে যাতে আপনি একটি ট্রিউ ভিউ ধারণ করেছেন যা আপনি সুরক্ষিত এবং স্ট্যাটিক করেন যাতে এই শ্রেণীর অন্যান্য (উত্পন্ন) উদাহরণগুলি একই ট্রিভিউউ সংশোধন ও প্রদর্শন করতে পারে। এটি বেসফর্ম থেকে উত্তরাধিকারসূত্রে একাধিক শ্রেণীর জন্য কাজ করবে না কারণ ট্রিভিউউ একবারে কেবল একটি ধারকতে থাকতে পারে। এটি সম্ভবত শেষ ফর্ম হতে হবে। যদিও প্রতিটি ইভেন্ট নিয়ন্ত্রণটি সম্পাদনা করতে পারে, এটি কেবলমাত্র একটি নির্দিষ্ট সময়ে প্রদর্শিত হবে। অবশ্যই, কাজের চারপাশে আছে, তবে তারা সব কুরুচিপূর্ণ। (এটি আমার কাছে সত্যই খারাপ নকশা বলে মনে হচ্ছে multiple কেন একাধিক পাত্রে একই বস্তুর পয়েন্টার সঞ্চয় করা যায় না? যাইহোক, এটি এটিই।

  2. ফর্মগুলির মধ্যে রাষ্ট্র, যা, বোতামের রাজ্যগুলি, লেবেল পাঠ্য ইত্যাদি,, আমাকে লোডের জন্য রাজ্যগুলির জন্য গ্লোবাল ভেরিয়েবলগুলি ব্যবহার করতে হবে এবং পুনরায় সেট করতে হবে।

  3. এটি ভিজ্যুয়াল স্টুডিওর ডিজাইনার খুব ভালভাবে সমর্থন করে না।

ব্যবহারের জন্য আরও ভাল, তবুও সহজেই রক্ষণাবেক্ষণযোগ্য ডিজাইন রয়েছে? বা ফর্ম উত্তরাধিকার এখনও সেরা পদ্ধতির?

আপডেট আমি এমভিসি থেকে এমভিপির দিকে পর্যবেক্ষণ প্যাটার্ন থেকে ইভেন্ট প্যাটার্নের দিকে নজর রেখেছিলাম। এই মুহূর্তের জন্য আমি যা ভাবছি তা এখানেই, সমালোচনা করুন:

আমার বেসফর্ম ক্লাসে কেবল নিয়ন্ত্রণগুলি এবং ইভেন্টগুলি সেই নিয়ন্ত্রণগুলির সাথে সংযুক্ত থাকবে। যে সমস্ত ইভেন্টগুলিকে হ্যান্ডল করার জন্য যে কোনও ধরণের যুক্তির প্রয়োজন তা অবিলম্বে বেসএফর্মপ্রেসেন্টার শ্রেণিতে চলে যাবে। এই শ্রেণিটি ইউআই থেকে ডেটা পরিচালনা করবে, যে কোনও যৌক্তিক ক্রিয়াকলাপ করবে এবং তারপরে বেসফর্মমোডেল আপডেট করবে। মডেল ইভেন্ট উপস্থাপন করবে, যা রাষ্ট্রীয় পরিবর্তনগুলি উপস্থাপক শ্রেণিতে প্রকাশ করবে, যা এটি সাবস্ক্রাইব (বা পর্যবেক্ষণ) করবে। যখন উপস্থাপক ইভেন্ট নোটিফিকেশন পান, এটি কোনও যুক্তি সম্পাদন করবে এবং তারপরে উপস্থাপক সেই অনুযায়ী ভিউটি সংশোধন করবেন।

মেমরিতে কেবল প্রতিটি মডেল শ্রেণীর মধ্যে একটি থাকবে তবে সম্ভাব্যভাবে বেসফর্ম এবং এর ফলে বেসফর্মপ্রিসেন্টারের অনেকগুলি উদাহরণ থাকতে পারে। এটি বেসফর্মের প্রতিটি উদাহরণকে একই ডেটা মডেলের সাথে সিঙ্ক্রোনাইজ করার আমার সমস্যার সমাধান করবে।

প্রশ্নাবলী:

শেষ স্তরযুক্ত বোতামটির মতো কোন স্তরের স্টাফ রাখা উচিত, যাতে আমি এটি ফর্মের মধ্যে ব্যবহারকারীর (যেমন সিএসএস মেনুতে) হাইলাইট রাখতে পারি?

এই নকশা সমালোচনা করুন। আপনার সাহায্যের জন্য ধন্যবাদ!


আপনি কেন বিশ্বব্যাপী ভেরিয়েবলগুলি ব্যবহার করতে বাধ্য হচ্ছেন তা আমি দেখতে পাচ্ছি না, তবে যদি তা হয় তবে অবশ্যই হ্যাঁ আরও ভাল পদ্ধতির অবশ্যই থাকতে হবে। হয়তো কারখানাগুলি উত্তরাধিকারের পরিবর্তে রচনাগুলির সাথে মিলিত সাধারণ উপাদান তৈরি করতে পারে?
stijn

আপনার পুরো নকশা ত্রুটিযুক্ত। আপনি যদি ইতিমধ্যে বুঝতে চান যে আপনি কী করতে চান ভিজ্যুয়াল স্টুডিও সমর্থন করে না যা আপনাকে কিছু বলা উচিত।
রামহাউন্ড

1
@ রামহাউন্ড এটি ভিজ্যুয়াল স্টুডিওর দ্বারা সমর্থিত, ঠিক ভাল নয়। মাইক্রোসফ্ট আপনাকে এটি করতে বলে। আমি এটিকে কেবলমাত্র এএসএসডিএন.মাইক্রোসফটি.এইন.ইউএস / লিবেরি / আএ 983613(v=vs.71).aspx এ ব্যথা বলে মনে করি , যাইহোক , আপনার যদি আরও ভাল ধারণা থাকে তবে আমি সকলের চোখ।
জোনাথন হেনসন

@ স্টিজন আমি মনে করি প্রতিটি বেস ফর্মটিতে আমার এমন একটি পদ্ধতি থাকতে পারে যা নিয়ন্ত্রণের রাজ্যগুলিকে অন্য একটি উদাহরণে লোড করবে। উদাহরণস্বরূপ লোডস্টেটসটোইউনস্ট্যান্স (বেসফর্ম উদাহরণ)। আমি সেই বেস টাইপের একটি নতুন ফর্মটি দেখাতে চাইলে যে কোনও সময় এটি কল করতে পারি। form_I_am_about_to_hide.LoadStatesToNewInstance (এই);
জোনাথন হেনসন

আমি। নেট বিকাশকারী নই, আপনি কি 1 নম্বর পয়েন্টে প্রসারিত করতে পারেন? আমার একটি সমাধান হতে পারে
ইমরান ওমর বুখশ

উত্তর:


6
  1. আমি জানি না কেন আপনার স্থির নিয়ন্ত্রণ দরকার। হয়তো আপনি কিছু জানেন যে আমি না। আমি প্রচুর ভিজ্যুয়াল উত্তরাধিকার ব্যবহার করেছি তবে আমি কখনও স্থিতিশীল নিয়ন্ত্রণগুলি প্রয়োজনীয় হতে দেখিনি। আপনার যদি সাধারণ ট্রিভিউ নিয়ন্ত্রণ থাকে, তবে প্রতিটি ফর্মের উদাহরণের নিয়ন্ত্রণের নিজস্ব উদাহরণ থাকতে দিন এবং ট্রিভিউগুলিতে আবদ্ধ ডেটার একক উদাহরণ ভাগ করুন ।

  2. ফর্মগুলির মধ্যে নিয়ন্ত্রণের স্থিতি (তথ্যের বিপরীতে) ভাগ করে নেওয়াও একটি অস্বাভাবিক প্রয়োজন। আপনি কি নিশ্চিত যে ফর্মবায় ফর্মএ-তে বোতামগুলির অবস্থা সম্পর্কে সত্যই জানা দরকার? এমভিপি বা এমভিসি ডিজাইন বিবেচনা করুন। প্রতিটি ফর্মকে বোবা "ভিউ" হিসাবে ভাবুন যা অন্যান্য মতামত এমনকি অ্যাপ্লিকেশন সম্পর্কে কিছুই জানে না। একটি স্মার্ট উপস্থাপক / নিয়ামক দিয়ে প্রতিটি ভিউ তদারকি করুন। যদি তা বোঝা যায়, তবে একক উপস্থাপক বেশ কয়েকটি মতামত তদারকি করতে পারেন। প্রতিটি দৃশ্যের সাথে একটি রাষ্ট্রের অবজেক্টকে যুক্ত করুন। আপনার যদি এমন কিছু স্থিতি রয়েছে যা দর্শনের মধ্যে ভাগ করা দরকার, উপস্থাপক (গুলি) এর মধ্যস্থতা করুন (এবং ডেটাবাইন্ডিং বিবেচনা করুন - নীচে দেখুন)।

  3. সম্মত, ভিজ্যুয়াল স্টুডিও আপনাকে মাথা ব্যথা দেবে। ফর্ম বা ব্যবহারকারীর নিয়ন্ত্রণের উত্তরাধিকার বিবেচনা করার সময়, ফর্ম ডিজাইনারের হতাশাব্যঞ্জক উদ্দীপনা এবং সীমাবদ্ধতার সাথে কুস্তি করার সম্ভাব্য (এবং সম্ভাব্য) ব্যয়ের তুলনায় আপনার সুবিধাগুলি যত্ন সহকারে বিবেচনা করা উচিত। আমি ফর্ম উত্তরাধিকারকে ন্যূনতম রাখার পরামর্শ দিচ্ছি - যখন বেতনটি বেশি হবে তখনই এটি ব্যবহার করুন। মনে রাখবেন, সাবক্লাসিংয়ের বিকল্প হিসাবে, আপনি সাধারণ "বেস" ফর্ম তৈরি করতে পারেন এবং প্রতিটি "সন্তানের" হয়ে ওঠার জন্য একবার এটিকে ইনস্ট্যান্ট করতে পারেন এবং তারপরে ফ্লাইটিকে কাস্টমাইজ করতে পারেন। ভাগ্যের দিকগুলির তুলনায় ফর্মের প্রতিটি সংস্করণের মধ্যে পার্থক্য যখন নাহয় হয় তখন এটি বোধগম্য হয়। (আইওডাব্লু: জটিল বেস ফর্ম, কেবল-সামান্য-জটিল-জটিল শিশু ফর্মগুলি)

যখন ইউআই বিকাশের উল্লেখযোগ্য সদৃশ প্রতিরোধে আপনাকে সহায়তা করে তখন ব্যবহারকারীর নিয়ন্ত্রণগুলি ব্যবহার করবেন না। ইউজারকন্ট্রোল উত্তরাধিকার বিবেচনা করুন কিন্তু ফর্ম উত্তরাধিকার হিসাবে একই বিবেচনা প্রয়োগ করুন।

আমি মনে করি যে আমি সবচেয়ে গুরুত্বপূর্ণ পরামর্শটি দিতে পারি তা হ'ল, আপনি যদি বর্তমানে কোনওরকম দর্শন / নিয়ামক প্যাটার্নটি নিযুক্ত না করেন তবে আমি দৃ strongly়ভাবে আপনাকে এটি শুরু করতে উত্সাহিত করব। এটি আপনাকে শিথিলকরণ এবং স্তর বিচ্ছেদের সুবিধাগুলি শিখতে এবং প্রশংসা করতে বাধ্য করে।

আপনার আপডেটের প্রতিক্রিয়া

শেষ স্তরযুক্ত বোতামটির মতো কোন স্তরের স্টাফ সংরক্ষণ করা উচিত, যাতে আমি এটি ব্যবহারকারীর জন্য হাইলাইট রাখতে পারি ...

আপনি যেমন উপস্থাপক এবং তার দৃশ্যের মধ্যে রাষ্ট্র ভাগ করে নেবেন এমন মত দর্শনের মধ্যে আপনি রাষ্ট্র ভাগ করতে পারেন। একটি বিশেষ শ্রেণিবদ্ধ শেয়ারডভিউস্টেট তৈরি করুন। সরলতার জন্য আপনি এটিকে একটি সিঙ্গলটন বানাতে পারেন, বা আপনি এটি প্রধান উপস্থাপকটিতে ইনস্ট্যান্ট করতে পারেন এবং সেখান থেকে সমস্ত দর্শনে (তাদের উপস্থাপকদের মাধ্যমে) এটি পাস করতে পারেন। রাষ্ট্র যখন নিয়ন্ত্রণের সাথে যুক্ত থাকে, তখন সম্ভব হয় যেখানে ডেটা বাইন্ডিং ব্যবহার করুন। বেশিরভাগ Controlবৈশিষ্ট্য ডেটা-সীমাবদ্ধ হতে পারে। উদাহরণস্বরূপ কোনও বাটনের ব্যাককালার সম্পত্তিটি আপনার শেয়ারডভিউস্টেট শ্রেণীর কোনও সংস্থার সাথে আবদ্ধ হতে পারে। আপনি যদি সমস্ত ফর্মগুলিতে অভিন্ন বাটনগুলি সহ এই বাঁধাই করেন তবে আপনি কেবল সেটিংস করে বাটন 1 সমস্ত ফর্মগুলিতে হাইলাইট করতে পারেন SharedViewState.Button1BackColor = someColor

আপনি যদি উইনফর্মস ডাটাবেইন্ডিংয়ের সাথে পরিচিত না হন তবে এমএসডিএন-এ চাপুন এবং কিছু রিডিং করুন। এটা কঠিন নয়. সম্পর্কে জানুন INotifyPropertyChangedএবং আপনি সেখানে অর্ধেক।

এখানে উদাহরণস্বরূপ বাটন 1ব্যাক কালার সম্পত্তি সহ একটি ভিউস্টেট শ্রেণীর একটি সাধারণ বাস্তবায়ন রয়েছে:

public class SharedViewState : INotifyPropertyChanged
{
    // boilerplate INotifyPropertyChanged stuff
    public event PropertyChangedEventHandler PropertyChanged;
    protected void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    // example of a property for data-binding
    private Color button1BackColor;
    public Color Button1BackColor
    {
        get { return button1BackColor; }
        set
        {
            if (value != button1BackColor)
            {
                button1BackColor = value;
                NotifyPropertyChanged("Button1BackColor");
            }
        }
    }
}

আপনার চিন্তাশীল উত্তরের জন্য আপনাকে ধন্যবাদ। আপনি কি ভিউ / কন্ট্রোলার প্যাটার্নের কোনও ভাল রেফারেন্স জানেন?
জোনাথন হেনসন

1
আমার মনে আছে এটি ভেবেছিলাম এটি বেশ ভাল ভূমিকা ছিল: Codebetter.com/jeremymiller/2007/05/22/…
Igby Largeman

আমার আপডেট দেখুন।
জোনাথন হেনসন

@ জোনাথনহেনসন: উত্তর আপডেট হয়েছে।
ইগবি লার্জম্যান

5

আমি এমভিভিএম প্যাটার্ন এবং আপডেট নিয়ন্ত্রণের উপর ভিত্তি করে একটি নতুন উইনফরম / ডাব্লুপিএফ অ্যাপ্লিকেশন বজায় রাখছি । এটি উইনফোর্ডস হিসাবে শুরু হয়েছিল, তারপরে আমি একটি ইউআই এর বিপণনের গুরুত্বের কারণে একটি ডাব্লুপিএফ সংস্করণ তৈরি করেছি যা দেখতে ভাল লাগে। আমি ভেবেছিলাম একই অ্যাপ্লিকেশন বজায় রাখা একটি আকর্ষণীয় ডিজাইনের সীমাবদ্ধতা হবে যা একই ব্যাকএন্ড কোড (ভিউমোডেলস এবং মডেল) সহ দুটি সম্পূর্ণ ভিন্ন ইউআই প্রযুক্তি সমর্থন করে এবং আমি বলতে পারি যে আমি এই পদ্ধতির সাথে বেশ সন্তুষ্ট।

আমার অ্যাপ্লিকেশনটিতে, যখনই আমি ইউআই এর অংশগুলির মধ্যে কার্যকারিতা ভাগ করে নেওয়ার প্রয়োজন হয়, আমি কাস্টম নিয়ন্ত্রণ বা ব্যবহারকারীর নিয়ন্ত্রণগুলি (ডাব্লুপিএফ ইউজারকন্ট্রোল বা উইনফোর্ডস ব্যবহারকারী নিয়ন্ত্রণ থেকে প্রাপ্ত ক্লাস) ব্যবহার করি) উইনফোর্ডস সংস্করণে ট্যাবপেজের উদ্ভূত শ্রেণীর ভিতরে অন্য একটি ব্যবহারকারীকন্ট্রোলের মধ্যে একটি ইউজারকন্ট্রোল রয়েছে যা শেষ পর্যন্ত মূল ফর্মের একটি ট্যাব নিয়ন্ত্রণের অভ্যন্তরে। ডাব্লুপিএফ সংস্করণটিতে ইউজারকন্ট্রোলগুলি এক স্তরের গভীর থেকে নেস্ট করেছে। কাস্টম নিয়ন্ত্রণ ব্যবহার করে আপনি সহজেই নিজের তৈরি ইউজারকন্ট্রোলগুলির বাইরে একটি নতুন ইউআই রচনা করতে পারেন।

যেহেতু আমি এমভিভিএম প্যাটার্নটি ব্যবহার করি, তাই আমি ভিউমোডেল ( উপস্থাপনা / ন্যাভিগেশন মডেল সহ ) বা মডেল (কোডটি ইউজার ইন্টারফেসের সাথে সম্পর্কিত কিনা তার উপর নির্ভর করে) যতটা সম্ভব প্রোগ্রাম লজিক রেখেছি , তবে একই ভিউমোডেল থেকে একটি উইনফোর্ডস ভিউ এবং ডাব্লুপিএফ ভিউ উভয়ই ব্যবহৃত হয়, ভিউমোডেলটিতে উইনফোর্ডস বা ডাব্লুপিএফ জন্য ডিজাইন করা বা ইউআইয়ের সাথে সরাসরি ইন্টারেক্ট করে এমন কোড ধারণ করার অনুমতি নেই; যেমন কোড ভিউ মধ্যে যেতে হবে।

এছাড়াও এমভিভিএম প্যাটার্নে, ইউআই অবজেক্টগুলির একে অপরের সাথে যোগাযোগ করা এড়ানো উচিত! পরিবর্তে তারা ভিউমোডেলগুলির সাথে যোগাযোগ করে। উদাহরণস্বরূপ, একটি পাঠ্যবক্স নিকটবর্তী তালিকাবক্স জিজ্ঞাসা করবে না কোন আইটেমটি নির্বাচিত; পরিবর্তে তালিকার বাক্সটি ভিউমডেল স্তরের কোথাও বর্তমানে নির্বাচিত আইটেমটির একটি রেফারেন্স সংরক্ষণ করবে এবং টেক্সটবক্স এখনই নির্বাচিত কী তা অনুসন্ধান করার জন্য ভিউমোডেল স্তরটিকে জিজ্ঞাসা করবে। এটি কোনও ফর্মের মধ্যে কোন বোতামটি অন্য ফর্মের মধ্যে থেকে চাপানো হয়েছিল তা অনুসন্ধান করার ক্ষেত্রে আপনার সমস্যার সমাধান করে। আপনি কেবল দুটি ফর্মের মধ্যে একটি নেভিগেশন মডেল অবজেক্ট (যা অ্যাপ্লিকেশনটির ভিউমডেল স্তরের অংশ) ভাগ করে নিন এবং সেই বস্তুতে এমন একটি সম্পত্তি রাখুন যা প্রতিনিধিত্ব করে কোন বোতামটি চাপানো হয়েছিল।

উইনফোর্স নিজেই এমভিভিএম প্যাটার্নটিকে খুব ভালভাবে সমর্থন করে না, তবে আপডেট কন্ট্রোলগুলি এমভিভিএমকে লাইব্রেরি হিসাবে তার নিজস্ব অনন্য পন্থা সরবরাহ করে যা উইনফোর্ডসের শীর্ষে বসে।

আমার মতে, প্রোগ্রাম ডিজাইনের এই পদ্ধতির খুব ভাল কাজ করে এবং আমি ভবিষ্যতের প্রকল্পগুলিতে এটি ব্যবহার করার পরিকল্পনা করি। এটি এত ভালভাবে কাজ করার কারণগুলি হ'ল (1) আপডেট নিয়ন্ত্রণগুলি স্বয়ংক্রিয়ভাবে নির্ভরতা পরিচালনা করে এবং (2) যে আপনার কোডটি কীভাবে গঠন করা উচিত তা সাধারণত খুব স্পষ্ট: ইউআই অবজেক্টগুলির সাথে ইন্টারেক্ট করে এমন সমস্ত কোডই ভিউতে অন্তর্ভুক্ত, সমস্ত কোড যা ইউআই-সম্পর্কিত তবে ভিআই মডেলের অন্তর্গত ইউআই অবজেক্টের সাথে ইন্টারঅ্যাক্ট করার দরকার নেই। বেশিরভাগ সময় আপনি আপনার কোডটি দুটি ভাগে ভাগ করবেন, একটি অংশ দেখার জন্য এবং অন্য অংশটি ভিউমোডেলের জন্য। আমার সিস্টেমে প্রসঙ্গ মেনুগুলি ডিজাইন করতে আমার কিছুটা অসুবিধা হয়েছিল, তবে শেষ পর্যন্ত আমি সেটির জন্য একটি নকশাও নিয়ে এসেছি।

আমার ব্লগে আপডেট কন্ট্রোলগুলি সম্পর্কে আমারও বকবক হয়েছে। যদিও এই পদ্ধতির প্রচুর অভ্যস্ত হয়ে পড়েছে এবং বড় আকারের অ্যাপ্লিকেশনগুলিতে (যেমন আপনার তালিকার বাক্সগুলিতে কয়েক হাজার আইটেম রয়েছে) স্বয়ংক্রিয়ভাবে নির্ভরতা পরিচালনার বর্তমান সীমাবদ্ধতার কারণে আপনি পারফরম্যান্স সমস্যার সম্মুখীন হতে পারেন।


3

আপনি ইতিমধ্যে একটি উত্তর গ্রহণ করেছেন যদিও আমি এর উত্তর দিতে যাচ্ছি।

অন্যরা যেমন উল্লেখ করেছে, কেন আপনি স্থির কিছু ব্যবহার করতে হয়েছিল তা আমি বুঝতে পারি না; এই শব্দগুলি মনে হচ্ছে আপনি খুব ভুলভাবে কিছু করছেন।

যাইহোক, আপনার মতো আমারও একই সমস্যা ছিল: আমার উইনফর্মস অ্যাপ্লিকেশনটিতে আমার বেশ কয়েকটি ফর্ম রয়েছে যা কিছু কার্যকারিতা এবং কিছু নিয়ন্ত্রণ ভাগ করে দেয়। এছাড়াও, আমার সমস্ত ফর্ম ইতিমধ্যে একটি বেস ফর্ম থেকে উদ্ভূত হয়েছে (আসুন একে "মাইফর্ম" বলুন) যা কাঠামো-স্তরের কার্যকারিতা যুক্ত করে (প্রয়োগ নির্বিশেষে। অনুশীলন এটি কেবল ততক্ষণ কাজ করে যতক্ষণ না আপনার ফর্মগুলি "হ্যালো, বিশ্ব! - ঠিক আছে - বাতিল করুন" ব্যতীত আর কিছু না করে।

আমি যা করে শেষ করেছি তা হ'ল: আমি আমার সাধারণ বেস ক্লাসটি "মাইফর্ম" রাখি, যা বেশ জটিল এবং আমি আমার অ্যাপ্লিকেশনটির সমস্ত ফর্ম এটি থেকে অবিরত রেখে চলেছি। তবে আমি এই ফর্মগুলিতে একেবারে কিছুই করি না, সুতরাং ভিএস ফর্ম ডিজাইনারের এডিট করতে কোনও সমস্যা নেই। এই ফর্মগুলি সম্পূর্ণরূপে কোডগুলি ধারণ করে যা ফর্ম ডিজাইনার তাদের জন্য উত্পন্ন করে। তারপরে, আমার কাছে "সারোগেটস" বলার মতো সামগ্রীর একটি পৃথক সমান্তরাল শ্রেণিবিন্যাস রয়েছে যা কন্ট্রোলগুলি সূচনা করা, ফর্ম এবং নিয়ন্ত্রণগুলি দ্বারা উত্পন্ন ইভেন্টগুলি পরিচালনা করা ইত্যাদির মতো সমস্ত অ্যাপ্লিকেশন-নির্দিষ্ট কার্যকারিতা ধারণ করে There আমার অ্যাপ্লিকেশনে সার্গেট ক্লাস এবং সংলাপগুলির মধ্যে চিঠিপত্র: সেখানে একটি বেস সারোগেট ক্লাস রয়েছে যা "মাইফর্ম" এর সাথে মিলে যায়, তারপরে অন্য একটি সারোগেট ক্লাস উত্পন্ন হয় যা "মাই অ্যাপ্লিকেশনফর্ম" এর সাথে মিলে যায়,

প্রতিটি সারোগেট নির্ধারিত সময়ের প্যারামিটার হিসাবে একটি নির্দিষ্ট ধরণের ফর্ম গ্রহণ করে এবং এটি এর ইভেন্টগুলির জন্য নিবন্ধ করে এটিতে নিজেকে যুক্ত করে। এটি "মাইসুরোগেট" - এর সমস্ত পথে বেসকেও প্রতিনিধিত্ব করে যা "মাইফর্ম" গ্রহণ করে। সেই সরোগেট ফর্মটির "নিষ্পত্তি" ইভেন্টের সাথে নিবন্ধভুক্ত করে, যাতে ফর্মটি ধ্বংস হয়ে যায়, তখন সার্োগেট নিজের উপর একটি অতিমাত্রাকে অনুরোধ করে যাতে এটি এবং তার বংশধরেরা সমস্ত ক্লিনআপ করতে পারে perform (ইভেন্ট ইত্যাদি থেকে নিবন্ধন করুন)

এটি এখন পর্যন্ত সূক্ষ্মভাবে কাজ করে চলেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.