কম্বোবক্স: একটি আইটেমে পাঠ্য এবং মান যুক্ত করা (কোনও বাঁধার উত্স নেই)


202

সি # উইন অ্যাপে, আমি কীভাবে আমার কম্বোবক্সের আইটেমগুলিতে পাঠ্য এবং মান উভয় যুক্ত করতে পারি? আমি একটি অনুসন্ধান করেছি এবং সাধারণত উত্তরগুলি "একটি উত্সকে বাঁধাই করা" ব্যবহার করে .. তবে আমার ক্ষেত্রে আমার প্রোগ্রামে একটি বাধ্যতামূলক উত্স প্রস্তুত নেই ... আমি কীভাবে এটি করতে পারি:

combo1.Item[1] = "DisplayText";
combo1.Item[1].Value = "useful Value"

উত্তর:


361

আপনার নিজের পাঠ্যটি ফেরত দিতে আপনার নিজের শ্রেণির প্রকারটি তৈরি করতে হবে এবং ToString () পদ্ধতিটি ওভাররাইড করতে হবে। আপনি যে শ্রেণীরটি ব্যবহার করতে পারেন তার একটি সাধারণ উদাহরণ এখানে:

public class ComboboxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

নিম্নলিখিতটি এর ব্যবহারের একটি সাধারণ উদাহরণ:

private void Test()
{
    ComboboxItem item = new ComboboxItem();
    item.Text = "Item text1";
    item.Value = 12;

    comboBox1.Items.Add(item);

    comboBox1.SelectedIndex = 0;

    MessageBox.Show((comboBox1.SelectedItem as ComboboxItem).Value.ToString());
}

4
আমাদের কি সত্যই এই নতুন ক্লাস কম্বোবক্সআইটিমের প্রয়োজন? আমি মনে করি ইতিমধ্যে তালিকার আইটেম নামে একটি বিদ্যমান আছে।
আমর এলগারি

15
আমি বিশ্বাস করি যে কেবল এএসপি.এনইটি-তে উপলব্ধ এবং উইনফোর্ডগুলিতে নয়।
আদম মার্কোভিটজ

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

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

4
আমরা পেতে পারি "SelectedValue" বা মান উপর ভিত্তি করে আইটেম নির্বাচন করুন ... উত্তর করুন
আলফা গ্যাব্রিয়েল ভি Timbol

185
// Bind combobox to dictionary
Dictionary<string, string>test = new Dictionary<string, string>();
        test.Add("1", "dfdfdf");
        test.Add("2", "dfdfdf");
        test.Add("3", "dfdfdf");
        comboBox1.DataSource = new BindingSource(test, null);
        comboBox1.DisplayMember = "Value";
        comboBox1.ValueMember = "Key";

// Get combobox selection (in handler)
string value = ((KeyValuePair<string, string>)comboBox1.SelectedItem).Value;

2
নিখুঁত কাজ করে এবং এটি নির্বাচিত উত্তর হওয়া উচিত। তবে আমরা ingালাইয়ের পরিবর্তে কম্বোবক্স 1 ব্যবহার করতে পারি না .নির্বাচিত পাঠ্য .নির্বাচিত আইটেম নিন এবং নিন। মূল্য?
জেফরি গাইনস

@ ফ্যাব কীভাবে আপনি একটি নির্দিষ্ট কী দিয়ে কম্বোবক্সে আইটেমটি খুঁজে পাবেন
স্মিথ

অভিধান কী এর উপর ভিত্তি করে কম্বোবক্সে কোনও আইটেম নির্বাচন করা সম্ভব? কী 3 নির্বাচন করুন সুতরাং আই 3 কী সহ আইটেম নির্বাচন করা হবে।
আতঙ্ক

এই পদ্ধতিটি আর vs2015 এর জন্য কাজ করে না। ব্যতিক্রমসমূহ এবং Valuemember নতুন displaymember জুড়তে সক্ষম হচ্ছে সম্পর্কে নিক্ষিপ্ত
প্লেট এর মূল্য পড়বে

119

আপনি এর মতো বেনাম শ্রেণি ব্যবহার করতে পারেন:

comboBox.DisplayMember = "Text";
comboBox.ValueMember = "Value";

comboBox.Items.Add(new { Text = "report A", Value = "reportA" });
comboBox.Items.Add(new { Text = "report B", Value = "reportB" });
comboBox.Items.Add(new { Text = "report C", Value = "reportC" });
comboBox.Items.Add(new { Text = "report D", Value = "reportD" });
comboBox.Items.Add(new { Text = "report E", Value = "reportE" });

আপডেট: যদিও উপরের কোডটি কম্বো বাক্সে সঠিকভাবে প্রদর্শিত হবে, আপনি এর ব্যবহার SelectedValueবা SelectedTextবৈশিষ্ট্যগুলি ব্যবহার করতে সক্ষম হবেন না ComboBox। এগুলি ব্যবহার করতে সক্ষম হতে কম্বো বাক্সটিকে নীচের মত বেঁধে রাখুন:

comboBox.DisplayMember = "Text";
comboBox.ValueMember = "Value";

var items = new[] { 
    new { Text = "report A", Value = "reportA" }, 
    new { Text = "report B", Value = "reportB" }, 
    new { Text = "report C", Value = "reportC" },
    new { Text = "report D", Value = "reportD" },
    new { Text = "report E", Value = "reportE" }
};

comboBox.DataSource = items;

14
আমি এটি সামান্যই সংশোধন করতে চাই কারণ একটি প্রোগ্রামার এর পাশাপাশি এটির জন্য লুপের প্রয়োজন হয়। অ্যারের পরিবর্তে আমি একটি তালিকা ব্যবহার করেছি List<Object> items = new List<Object>(); তারপরে আমি items.Add( new { Text = "report A", Value = "reportA" } );লুপের মধ্যে পদ্ধতিটি ব্যবহার করতে সক্ষম হয়েছি ।
অ্যান্ড্রু

1
অ্যান্ড্রু, আপনি কি নির্বাচিত তালিকার সম্পত্তি নিয়ে কাজ করার জন্য তালিকাটি পেয়েছেন?
পিটার পিটলক

@ ভেনক্যাট,comboBox.SelectedItem.GetType().GetProperty("Value").GetValue(comboBox.SelectedItem, null)
অপটভিয়াস

2
@ ভেনকাট যদি আপনি দ্বিতীয় সমাধানটি ব্যবহার করেন যা সেট করে DataSourceআপনি কম্বোবক্সের বৈশিষ্ট্য SelectedValueবা SelectedTextবৈশিষ্ট্যগুলি ব্যবহার করতে পারেন তবে কোনও বিশেষ castালাই করার দরকার নেই।
জেপিপ্রগ্রামার

32

dynamicরান-টাইমে কম্বোবক্স আইটেমটি সমাধান করার জন্য আপনার অবজেক্টটি ব্যবহার করা উচিত ।

comboBox.DisplayMember = "Text";
comboBox.ValueMember = "Value";

comboBox.Items.Add(new { Text = "Text", Value = "Value" });

(comboBox.SelectedItem as dynamic).Value

1
এটি আলাদা ক্লাস তৈরি করা এবং টাউস্ট্রিং () কে ওভাররাইড করার চেয়ে অনেক ভাল।
ডন শ্রোত

1
গতিশীল কেবল সি # 4 এবং এর চেয়েও উচ্চতর উপলভ্য। (.NET 4.5 আমি মনে করি)
MickeyfAgain_BeforeExitOfSO

সহজ এবং দ্রুত লিখতে! অস্পষ্ট মান হিসাবে স্ট্রিং = CType (Me.SectionIDToComboBox.SelectedItem, অবজেক্ট) .Value: আমি VB.net মধ্যে SelectedValue জন্য এটা করেছে
Hannington মাম্বো

1
তাহলে, কীভাবে "মান" ব্যবহার করে সঠিক কম্বো বাক্স আইটেমটি সেট করবেন?
ডেভ লুডভিগ

17

আপনি Dictionaryএকটিতে পাঠ্য এবং মান যুক্ত করার জন্য একটি কাস্টম ক্লাস তৈরির পরিবর্তে অবজেক্টটি ব্যবহার করতে পারেন Combobox

একটি Dictionaryঅবজেক্টে কী এবং মান যুক্ত করুন :

Dictionary<string, string> comboSource = new Dictionary<string, string>();
comboSource.Add("1", "Sunday");
comboSource.Add("2", "Monday");

উত্স অভিধান অবজেক্টটি এতে আবদ্ধ করুন Combobox:

comboBox1.DataSource = new BindingSource(comboSource, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";

কী এবং মানটি পুনরুদ্ধার করুন:

string key = ((KeyValuePair<string,string>)comboBox1.SelectedItem).Key;
string value = ((KeyValuePair<string,string>)comboBox1.SelectedItem).Value;

সম্পূর্ণ উত্স: কম্বোবক্স টেক্সট এনডি মান


14

এটি সবেমাত্র মাথায় আসার একটি উপায়:

combo1.Items.Add(new ListItem("Text", "Value"))

এবং কোনও আইটেমের পাঠ্য বা মান পরিবর্তন করতে, আপনি এটি এটি করতে পারেন:

combo1.Items[0].Text = 'new Text';

combo1.Items[0].Value = 'new Value';

উইন্ডোজ ফর্মগুলিতে তালিকা আইটেম নামে কোনও শ্রেণি নেই । এটা শুধুমাত্র বিদ্যমান ASP.NET , তাই আপনি একই এটি ব্যবহার করার পূর্বে আপনার নিজস্ব বর্গ লিখতে যেমন @Adam Markowitz করেছিল প্রয়োজন হবে তার উত্তর

এই পৃষ্ঠাগুলি চেক করুন, তারা সাহায্য করতে পারে:


2
আমার ভুল না হলে তালিকার আইটেমটি কেবল এএসপি.নেট এ উপলব্ধ
অ্যাডাম মার্কোভিটজ

হ্যাঁ :( দুর্ভাগ্যক্রমে এটি কেবল এএসপি নেটনে আছে ... তাই এখন আমি কী করতে পারি?
বোহন

তারপরে একটি কম্বোবক্সে সিলেক্টভ্যালু বা সিলেক্টটেক্সট বৈশিষ্ট্যের বিন্দুটি কী?
তাদেরকে JSON

11

এটি আসল পোস্টে প্রদত্ত অবস্থার জন্য কাজ করবে কিনা তা জানেন না (এটি দু'বছর পরে এমনটি মনে করবেন না) তবে এই উদাহরণটি আমার পক্ষে কাজ করে:

Hashtable htImageTypes = new Hashtable();
htImageTypes.Add("JPEG", "*.jpg");
htImageTypes.Add("GIF", "*.gif");
htImageTypes.Add("BMP", "*.bmp");

foreach (DictionaryEntry ImageType in htImageTypes)
{
    cmbImageType.Items.Add(ImageType);
}
cmbImageType.DisplayMember = "key";
cmbImageType.ValueMember = "value";

আপনার মানটি আবার পড়তে, আপনাকে সিলেক্টড আইটেম সম্পত্তি একটি অভিধানইন্ট্রি অবজেক্টে কাস্ট করতে হবে এবং তারপরে আপনি এর কী এবং মান বৈশিষ্ট্যগুলি মূল্যায়ন করতে পারেন। এই ক্ষেত্রে:

DictionaryEntry deImgType = (DictionaryEntry)cmbImageType.SelectedItem;
MessageBox.Show(deImgType.Key + ": " + deImgType.Value);

7
//set 
comboBox1.DisplayMember = "Value"; 
//to add 
comboBox1.Items.Add(new KeyValuePair("2", "This text is displayed")); 
//to access the 'tag' property 
string tag = ((KeyValuePair< string, string >)comboBox1.SelectedItem).Key; 
MessageBox.Show(tag);

5

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

public class ComboBoxItem<T>
{
    public string Name;
    public T value = default(T);

    public ComboBoxItem(string Name, T value)
    {
        this.Name = Name;
        this.value = value;
    }

    public override string ToString()
    {
        return Name;
    }
}

এটির হিসাবে <T>এটি valueহিসাবে ঘোষণার চেয়ে ভাল ব্যবহার করা ভাল object, কারণ objectএরপরে আপনাকে প্রতিটি আইটেমের জন্য ব্যবহৃত ধরণের ট্র্যাক রাখতে হবে এবং এটি সঠিকভাবে ব্যবহার করার জন্য এটি আপনার কোডে কাস্ট করতে হবে।

আমি আমার প্রকল্পগুলিতে এটি বেশ কিছুদিন ধরে ব্যবহার করছি। এটা সত্যিই সহজ।


4

আমি ফাবের উত্তর পছন্দ করেছি কিন্তু আমার পরিস্থিতির জন্য অভিধান ব্যবহার করতে চাইনি তাই আমি টিপলগুলির একটি তালিকা প্রতিস্থাপন করেছি।

// set up your data
public static List<Tuple<string, string>> List = new List<Tuple<string, string>>
{
  new Tuple<string, string>("Item1", "Item2")
}

// bind to the combo box
comboBox.DataSource = new BindingSource(List, null);
comboBox.ValueMember = "Item1";
comboBox.DisplayMember = "Item2";

//Get selected value
string value = ((Tuple<string, string>)queryList.SelectedItem).Item1;

3

ডেটা টেবিল ব্যবহার করে একটি উদাহরণ:

DataTable dtblDataSource = new DataTable();
dtblDataSource.Columns.Add("DisplayMember");
dtblDataSource.Columns.Add("ValueMember");
dtblDataSource.Columns.Add("AdditionalInfo");

dtblDataSource.Rows.Add("Item 1", 1, "something useful 1");
dtblDataSource.Rows.Add("Item 2", 2, "something useful 2");
dtblDataSource.Rows.Add("Item 3", 3, "something useful 3");

combo1.Items.Clear();
combo1.DataSource = dtblDataSource;
combo1.DisplayMember = "DisplayMember";
combo1.ValueMember = "ValueMember";

   //Get additional info
   foreach (DataRowView drv in combo1.Items)
   {
         string strAdditionalInfo = drv["AdditionalInfo"].ToString();
   }

   //Get additional info for selected item
    string strAdditionalInfo = (combo1.SelectedItem as DataRowView)["AdditionalInfo"].ToString();

   //Get selected value
   string strSelectedValue = combo1.SelectedValue.ToString();

3

আপনি এই কোডটি টেক্সট এবং মান সহ কম্বো বাক্সে কিছু আইটেম সন্নিবেশ করতে ব্যবহার করতে পারেন।

সি শার্প

private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
    combox.Items.Insert(0, "Copenhagen");
    combox.Items.Insert(1, "Tokyo");
    combox.Items.Insert(2, "Japan");
    combox.Items.Insert(0, "India");   
}

XAML

<ComboBox x:Name="combox" SelectionChanged="ComboBox_SelectionChanged_1"/>

আপনার সমাধান ব্যাখ্যা করুন।
বৈভব বাজাজ

কেবল এটি, নীচের দেশগুলিকে একটি কমবক্সে তাদের নিজ নিজ সূচীতে যুক্ত করুন u আপনি যখন এটি চালান। 0 টি সূচকের একটি বিকল্পের সাথে একটি কমবক্স উপস্থিত হবে you আপনি যদি কমবক্সটি ক্লিক করেন তবে নিম্নলিখিত বিকল্পটি প্রদর্শিত হবে
মুহাম্মদ আহমদ

এটি আইডির পক্ষে কাজ করে না এটি কেবল সূচকে সূচী করার একটি উপায়, যা প্রশ্নটি ছিল তা নয়
মিঃ হেলিস

2

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

প্রথমে যে কোনও এনাম মানকে কম্বোবক্স আইটেমে রূপান্তর করার জন্য এই সাধারণ ক্লাসটি তৈরি করুন:

public class ComboEnumItem {
    public string Text { get; set; }
    public object Value { get; set; }

    public ComboEnumItem(Enum originalEnum)
    {
        this.Value = originalEnum;
        this.Text = this.ToString();
    }

    public string ToString()
    {
        FieldInfo field = Value.GetType().GetField(Value.ToString());
        DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
        return attribute == null ? Value.ToString() : attribute.Description;
    }
}

দ্বিতীয়ত আপনার OnLoadইভেন্ট হ্যান্ডলারটিতে, আপনার টাইপের ComboEnumItemsপ্রত্যেকটির উপর ভিত্তি করে একটি তালিকা তৈরি করতে আপনাকে আপনার কম্বো বাক্সের উত্স সেট করতে হবে । লিনকের সাথে এটি অর্জন করা যেতে পারে। তারপরে ঠিক সেট করুন :EnumEnumDisplayMemberPath

    void OnLoad(object sender, RoutedEventArgs e)
    {
        comboBoxUserReadable.ItemsSource = Enum.GetValues(typeof(EMyEnum))
                        .Cast<EMyEnum>()
                        .Select(v => new ComboEnumItem(v))
                        .ToList();

        comboBoxUserReadable.DisplayMemberPath = "Text";
        comboBoxUserReadable.SelectedValuePath= "Value";
    }

এখন ব্যবহারকারী আপনার ব্যবহারকারীর বন্ধুত্বপূর্ণের একটি তালিকা থেকে Descriptionsনির্বাচন করবেন, তবে তারা enumযা নির্বাচন করবেন তার মানটি আপনি কোডটিতে ব্যবহার করতে পারবেন। কোডটিতে ব্যবহারকারীর নির্বাচন অ্যাক্সেস করতে comboBoxUserReadable.SelectedItemহবে ComboEnumItemএবং comboBoxUserReadable.SelectedValueহবে EMyEnum


1

আপনি জেনেরিক প্রকারটি ব্যবহার করতে পারেন:

public class ComboBoxItem<T>
{
    private string Text { get; set; }
    public T Value { get; set; }

    public override string ToString()
    {
        return Text;
    }

    public ComboBoxItem(string text, T value)
    {
        Text = text;
        Value = value;
    }
}

একটি সাধারণ ইন-টাইপ ব্যবহারের উদাহরণ:

private void Fill(ComboBox comboBox)
    {
        comboBox.Items.Clear();
        object[] list =
            {
                new ComboBoxItem<int>("Architekt", 1),
                new ComboBoxItem<int>("Bauträger", 2),
                new ComboBoxItem<int>("Fachbetrieb/Installateur", 3),
                new ComboBoxItem<int>("GC-Haus", 5),
                new ComboBoxItem<int>("Ingenieur-/Planungsbüro", 9),
                new ComboBoxItem<int>("Wowi", 17),
                new ComboBoxItem<int>("Endverbraucher", 19)
            };

        comboBox.Items.AddRange(list);
    }

0

আমার একই সমস্যা ছিল, আমি যা করেছি তা হ'ল নতুন ComboBoxসূচকটির সাথে একই সূচকটিতে প্রথমে একটি মূল্য যুক্ত করে এবং তারপরে যখন আমি একই সময়ে দ্বিতীয় এক পরিবর্তনের সূচকের মূল কম্বো পরিবর্তন করি তখন আমি মানটি নিয়ে যাই দ্বিতীয় কম্বো এবং এটি ব্যবহার করুন।

এই কোড:

public Form1()
{
    eventos = cliente.GetEventsTypes(usuario);

    foreach (EventNo no in eventos)
    {
        cboEventos.Items.Add(no.eventno.ToString() + "--" +no.description.ToString());
        cboEventos2.Items.Add(no.eventno.ToString());
    }
}

private void lista_SelectedIndexChanged(object sender, EventArgs e)
{
    lista2.Items.Add(lista.SelectedItem.ToString());
}

private void cboEventos_SelectedIndexChanged(object sender, EventArgs e)
{
    cboEventos2.SelectedIndex = cboEventos.SelectedIndex;
}

0

শ্রেণি তৈরি:

namespace WindowsFormsApplication1
{
    class select
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }
}

ফর্ম 1 কোডগুলি:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            List<select> sl = new List<select>();
            sl.Add(new select() { Text = "", Value = "" });
            sl.Add(new select() { Text = "AAA", Value = "aa" });
            sl.Add(new select() { Text = "BBB", Value = "bb" });
            comboBox1.DataSource = sl;
            comboBox1.DisplayMember = "Text";
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

            select sl1 = comboBox1.SelectedItem as select;
            t1.Text = Convert.ToString(sl1.Value);

        }

    }
}

0

ভিজুয়াল স্টুডিও 2013 এটি এটি করে:

একক আইটেম:

comboBox1->Items->AddRange(gcnew cli::array< System::Object^  >(1) { L"Combo Item 1" });

একাধিক আইটেম:

comboBox1->Items->AddRange(gcnew cli::array< System::Object^  >(3)
{
    L"Combo Item 1",
    L"Combo Item 2",
    L"Combo Item 3"
});

ক্লাস ওভাররাইডগুলি করার বা অন্য কিছু অন্তর্ভুক্ত করার দরকার নেই। এবং হ্যাঁ comboBox1->SelectedItemএবং comboBox1->SelectedIndexকলগুলি এখনও কাজ করে।


0

এটি অন্যান্য উত্তরগুলির মতো কিছু, তবে কমপ্যাক্ট এবং যদি আপনার ইতিমধ্যে একটি তালিকা থাকে তবে অভিধানে রূপান্তর এড়িয়ে চলে।

ComboBoxউইন্ডোজ ফর্মে একটি "কম্বোবক্স" দেওয়া হয়েছে এবং ধরণের বৈশিষ্ট্য SomeClassসহ একটি শ্রেণি দেওয়া হয়েছে ,stringName

List<SomeClass> list = new List<SomeClass>();

combobox.DisplayMember = "Name";
combobox.DataSource = list;

যার অর্থ সিলেক্ট আইটেম হ'ল একটি SomeClassবস্তু list, এবং প্রতিটি আইটেম comboboxতার নাম ব্যবহার করে প্রদর্শিত হবে।


সত্য! আমি DisplayMemberআগে ব্যবহার করেছি ... আমি সর্বদা ভুলে যাই এটি বিদ্যমান। আমি এই সম্পত্তিটির দিকে মনোযোগ দেওয়ার আগে আমি যে সমাধানটি পেয়েছি সে সম্পর্কে অভ্যস্ত হয়েছি, এছাড়াও এটি সর্বদা সহায়তা করে না। সমস্ত শ্রেণীর একটি Nameবা Tagসম্পত্তি নেই বা স্ট্রিং প্রপার্টি রয়েছে যা প্রদর্শন পাঠ্য হিসাবে নির্বিচারে ব্যবহৃত হতে পারে।
ম্যাথিউস রোচা

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

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

আমি সম্মত, আপনার উত্তরটি অবশ্যই কম্বোবক্সে যুক্ত করতে চান এমন প্রতিটি ধরণের জন্য উত্পন্ন শ্রেণি তৈরির চেয়ে আরও সুবিধাজনক বলে মনে হচ্ছে। চমৎকার কাজ! আমি ভবিষ্যতে মনে করি যদি 'নাম' এর মতো সম্পত্তি সহজেই পাওয়া না যায় আমি আপনার উত্তর বা অভিধানের উত্তরের মতো কিছু ব্যবহার করতে যাচ্ছি :)
অ্যালেক্স স্মিথ

0

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

List<string> items = new List<string>();

// populate list with test strings
for (int i = 0; i < 100; i++)
            items.Add(i.ToString());

// set data source
testComboBox.DataSource = items;

এবং ইভেন্ট হ্যান্ডলারটিতে নির্বাচিত মানের মান (স্ট্রিং) পান

string test = testComboBox.SelectedValue.ToString();

0

এখানে আরও ভাল সমাধান;

Dictionary<int, string> userListDictionary = new Dictionary<int, string>();
        foreach (var user in users)
        {
            userListDictionary.Add(user.Id,user.Name);
        }

        cmbUser.DataSource = new BindingSource(userListDictionary, null);
        cmbUser.DisplayMember = "Value";
        cmbUser.ValueMember = "Key";

তথ্য পুনরুদ্ধার

MessageBox.Show(cmbUser.SelectedValue.ToString());

আমি কম্বোবক্সটি পূরণ করতে সক্ষম হয়েছি, এর উপর ক্লিক করে এই ত্রুটিটি ভিএস ২০১৯-এ পাওয়া যায় একটি কোয়েরি ইন্টারফেস কলটি সিওএম দৃশ্যমান পরিচালিত শ্রেণীর ক্লাব ইন্টারফেসের জন্য অনুরোধ করা হয়েছিল 'কম্বোবক্সউইউপ্রাইভাইডার
এমসি 9000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.