WinForms কম্বোবক্স ডেটা বাঁধাই গোটাই

অনুমান আপনি নিম্নলিখিত মত কিছু করছেন

List myitems = new List
{
    "Item 1",
    "Item 2",
    "Item 3"
};

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
box2.DataSource = myitems

তাই এখন আমরা 2 কম্বো বাক্স আছে যে অ্যারে যাও আবদ্ধ, এবং সবকিছু সূক্ষ্ম কাজ করে। কিন্তু যখন আপনি একটি কম্বো বাক্সের মান পরিবর্তন করেন, এটি আপনার নির্বাচিত সিম্বলের দুটি কম্বো বাক্স পরিবর্তন করে।

এখন, আমি জানি যে এরেস সবসময় রেফারেন্স দ্বারা পাস হয় (শিখেছি যে যখন আমি C: D) শিখেছি, কিন্তু কেন পৃথিবী কম্বো বক্স একসঙ্গে পরিবর্তন করবে? আমি বিশ্বাস করি না কম্বো বক্স নিয়ন্ত্রণ সংগ্রহে সব পরিবর্তন করা হয়।

প্রায় একটি কাজ হিসাবে, এই প্রত্যাশিত / পছন্দসই যে funcionality অর্জন করবে না

ComboBox box = new ComboBox();
box.DataSource = myitems.ToArray();
0
যোগ সম্পাদিত
মতামত: 1

3 উত্তর

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

যখন আপনি DataSource দ্বিতীয় কম্বোবক্স সেট করবেন তখন এটি একই বাইন্ডিং কন্সটেক্ট (ফর্মে) ব্যবহার করবে যা একই রেফারেন্স দেবে ConcurrencyManager হিসাবে উপরের তথ্য বাইন্ডিং সেট আপ ব্যবহৃত।

আরো বিস্তারিত ব্যাখ্যা পেতে বাঁধাই কনটেস্টেক্স দেখুন।

0
যোগ
কোন বেনিফিট প্রদান এবং ডাটা বাঁধাই নিয়ন্ত্রণ সম্পূর্ণরূপে স্ববিরোধী পাল্টা অনেক প্রচেষ্টা মত মনে হয়।
যোগ লেখক Belmiris, উৎস

একটি ভাল কার্যধারা (তথ্যসূত্রের আকারের উপর নির্ভর করে) দুটি বাইন্ডিংসোর্স বস্তুগুলি (২.২00 এর মতো নতুন) ঘোষণা করতে হয় যাতে সংগ্রহগুলি আবদ্ধ হয় এবং তারপর কংবক্সগুলি এগুলি আবদ্ধ করুন।

আমি একটি সম্পূর্ণ উদাহরণ ঘিরা

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

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private BindingSource source1 = new BindingSource();
        private BindingSource source2 = new BindingSource();

        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(Form1Load);
        }

        void Form1Load(object sender, EventArgs e)
        {
            List myitems = new List
            {
                "Item 1",
                "Item 2",
                "Item 3"
            };

            ComboBox box = new ComboBox();
            box.Bounds = new Rectangle(10, 10, 100, 50);
            source1.DataSource = myitems;
            box.DataSource = source1;

            ComboBox box2 = new ComboBox();
            box2.Bounds = new Rectangle(10, 80, 100, 50);
            source2.DataSource = myitems;
            box2.DataSource = source2;

            Controls.Add(box);
            Controls.Add(box2);
        }
    }
}

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

0
যোগ
আমি যে সঙ্গে অদ্ভুত unreported বাগ কিছু পাওয়া গেছে। সবচেয়ে খারাপ কেস দৃশ্যকল্প হচ্ছে যে কোনও কনভোবক্স তার অন্য কোন নিয়ন্ত্রণে ফোকাস দিতে অস্বীকার করেছে: D
যোগ লেখক Quibblesome, উৎস
কন্সট্রাকটর মধ্যে বাঁধাই ফলাফল কিছু সত্যিই অদ্ভুত বাগ মধ্যে ইঙ্গিত জন্য আপনাকে ধন্যবাদ। আমি একটি অনুরূপ সমস্যা ছিল এবং আমি লোড ইভেন্ট আমার কোড সরানো এবং এটি আবদ্ধ তথ্য দেখানো।
যোগ লেখক bunggo, উৎস

এটি শুধু একটি টাইপ হতে পারে, তবে আপনি যে কোডটি দিয়েছেন তা কেবলমাত্র ডাটা সোর্স সেটিং করার সময় আপনি প্রথম কম্বো বাক্সের রেফারেন্সটি উল্লেখ করেছেন:

ComboBox box = new ComboBox();
box.DataSource = myitems;

ComboBox box2 = new ComboBox();
**box**.DataSource = myitems

box2 এর জন্য তথ্যসূত্র সেট করা নেই।

0
যোগ