আমি কীভাবে সি # ব্যবহার করে আমার স্ট্রিংয়ের সাথে মেলে কম্বোবক্সে নির্বাচিত আইটেমটি সেট করব?


197

আমি একটি স্ট্রিং "পাচ্ছেন test1" আছে এবং আমার কম্বো রয়েছে test1, test2এবং test3। আমি কীভাবে নির্বাচিত আইটেমটিকে "টেস্ট 1" তে সেট করব? তা হল, আমি আমার স্ট্রিংটি কম্বোবক্স আইটেমগুলির সাথে কীভাবে মিলব?

আমি নীচের লাইনটি সম্পর্কে ভাবছিলাম, তবে এটি কাজ করে না।

comboBox1.SelectedText = "test1"; 

এটা কিভাবে কাজ করে না? কোডের এই লাইনটি চললে কী ঘটে?
কেট গ্রেগরি

@ কেটগ্রিগরি এটি কেবলমাত্র "টেস্ট 1" স্ট্রিংটিকে বিদ্যমান পাঠ্যের সাথে
সম্মতি জানায়

আপনার যদি আইটেমের মানটি জানার কোনও উপায় থাকে তবে আপনি ব্যবহার করতে পারেন: comboBox1.SelectedValue = মান_আর_আপনার_স্ট্রিং;
César

SelectedText"নির্বাচিত" পাঠ্যটিকে টেস্ট 1 এ পরিবর্তন করে। যদি কোনও "নির্বাচন" (চিহ্নিত পাঠ্য) তৈরি না হয়, তবে পাঠ্য ক্যারেটের অবস্থানে sertedোকানো হবে।
এএএ

উত্তর:


278

এই কৌতুক করতে হবে:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")

আমার কাছে আরও ভাল উত্তর বলে মনে হচ্ছে কারণ আপনার কাছে একটি রিটার্নের মান রয়েছে আপনি একটি পরিবর্তনশীলটিতে অস্থায়ী সঞ্চয় করতে পারেন এবং এটির পরীক্ষা করার জন্য এটি ব্যবহার করতে পারেন যা আপনি সন্ধান করছেন found
এক্সেল কাস্টাস পেনা

কমবক্স 1
তে

@thoitbk - এ দুটিই MSDN মতে msdn.microsoft.com/en-us/library/... , পদ্ধতি FindStringExact() "কম্বো বাক্স যে চিহ্নিত স্ট্রিংয়ের সাথে মিলে যায় প্রথম আইটেমে অনুসন্ধান করে।"
ডাব স্টাইলী

207

আপনি কি পাঠ্য সম্পত্তি চেষ্টা করেছেন ? এটা আমার জন্য কাজ করে.

ComboBox1.Text = "test1";

নির্বাচিত পাঠ্য সম্পত্তিটি কম্বো বাক্সের পাঠ্যবক্স অংশে সম্পাদনযোগ্য পাঠ্যের নির্বাচিত অংশের জন্য।


7
অবশ্যই এটি তালিকা থেকে প্রাসঙ্গিক আইটেমটি বেছে নেওয়ার পরিবর্তে কম্বোবক্সের সম্পাদনাযোগ্য অঞ্চলে পাঠ্য সেট করে? তালিকার আইটেম সংগ্রহের মধ্যে যদি কেবল স্ট্রিংয়ের পরিবর্তে অবজেক্ট থাকে তবে আমি সন্দেহ করি এটি উপযুক্ত তালিকা আইটেমটি নির্বাচন করবে, বরং এটি কেবল কম্বোবক্সে পাঠ্য সম্পত্তিটি সেট করবে?
ট্যাবিকুল

9
এটি নিয়ন্ত্রণের
সিলেক্টভ্যালু

খুশী হলাম। হরফ আকার, ওজন এবং পারিবারিক পুলডাউন জন্য সুন্দরভাবে কাজ করে। ক্লাসগুলির মধ্যে কোনও কাস্ট বা রূপান্তর নেই। খুব সহজ!
ল্যান্স ক্লিভল্যান্ড

3
কেবলমাত্র ক্ষেত্রে: এই পরামিতিটি কম্বোবক্সকে পপুলেশন করার পরেই সেট করতে হবে।
এন্টোইন রড্রিগেজ

12
আমার কম্বোবক্স ড্রপডাউনস্টাইলটি ড্রপডাউনলিস্ট এবং। পাঠ্য = "কিছু পাঠ্য" কাজ করে না। এই সমাধানটি আমার পক্ষে দুর্দান্ত কাজ করেছে: Combox1.SelectedIndex = Combox1.FindStringExact ("test1")
মায়াঙ্ক

48

ধরে নেওয়া হচ্ছে যে আপনার কম্বোবক্সটি ডেটাবাউন্ড নয় আপনার নিজের ফর্মের "আইটেমগুলি" সংগ্রহের মধ্যে অবজেক্টের সূচকটি খুঁজে বের করতে হবে এবং তারপরে "নির্বাচিত তালিকা" সম্পত্তিটি যথাযথ সূচকে সেট করতে হবে।

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

মনে রাখবেন যে আইটেমটি পাওয়া না গেলে সূচিপত্র ফাংশনটি একটি যুক্তিযুক্ত ধারণা ছুঁড়ে দিতে পারে।


1
এটির নির্বাচিত আইএনএডএক্সটি নির্বাচিত নয় মনে রাখুন ... এবং সংকলক অভিযোগ করবে না, কেবল কম্বোবক্স মান সেট করতে ব্যর্থ হয়
রব

আপনি লজিক্যাল ত্রুটিগুলি পছন্দ করেন না যা কোনও ব্যতিক্রম ছুঁড়ে না ফেলে, তারা কেবল কাজ করে না ...
স্প্যানস

এটি আইটেমটি নির্বাচন করছে, তবে কম্বোবক্সে অন চেঞ্জ ইভেন্টটি কল করছে না
ম্রিড

39

যদি আপনার কম্বোবক্সের আইটেমগুলি স্ট্রিং হয় তবে আপনি চেষ্টা করতে পারেন:

comboBox1.SelectedItem = "test1";

18
: কোন তা না হয় msdn.microsoft.com/en-us/library/...
Frederik Gheysels

দিন বাঁচাল! নির্বাচিত আইটেমটি টাইপের সাথে অবশ্যই মিলবে - এটি আমার জন্য ছিল! আমি আমার মাথার উপর আঁচড় দিচ্ছিলাম কেন নির্বাচিত আইটেমটি সেট করা হয়নি এমনকি আইটেমটি পরিষ্কারভাবে ছিল - এটি একটি প্রকারের অমিল হতে পারে!
সুধাংশু মিশ্র

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

10

আমার জন্য এটি কেবল কাজ করেছে:

foreach (ComboBoxItem cbi in someComboBox.Items)
{
    if (cbi.Content as String == "sometextIntheComboBox")
    {
        someComboBox.SelectedItem = cbi;
        break;
    }
}

মোড: এবং আপনার যদি কম্বোবক্সে আইটেম সেট আপ হিসাবে আপনার নিজস্ব অবজেক্ট থাকে তবে কম্বোবক্স আইটেমের পরিবর্তে তাদের মধ্যে একটি করুন:

foreach (Debitor d in debitorCombo.Items)
{
    if (d.Name == "Chuck Norris")
    {
        debitorCombo.SelectedItem = d;
        break;
    }
}

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

এটি উইনআরটি 8.1-এ দুর্দান্ত কাজ করেছে। ডেভ তার সিলেক্ট আইটেমবাইভ্যালু () দ্রষ্ট্রে লিখেছেন বলে আমি আসলে একটি প্রসারিত পদ্ধতিতে শীর্ষের অগ্রণীটিকে আবৃত করেছিলাম এবং এটি সত্যই নিখুঁত সমাধান ছিল।
স্পিডনেট

9

SelectedText পেতে বা যেমন নথিভুক্ত কম্বো মধ্যে নির্বাচিত আইটেমের জন্য স্ট্রিং সম্পাদকে প্রকৃত টেক্সট সেট করতে হয় এখানে । আপনি যদি সেট করে থাকেন তবে এটি অযোগ্য হয়ে যায়:

comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

ব্যবহার করুন:

comboBox1.SelectedItem = "test1";

বা:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

1
comboBox1.Items.IndexOf ... আইটেমগুলি ফাঁকা থাকলে একটি নুলারফেরান এক্সেকশন ঝুঁকিপূর্ণ।
গ্যারি


7

আমি একটি এক্সটেনশন পদ্ধতি ব্যবহার করেছি:

public static void SelectItemByValue(this ComboBox cbo, string value)
{
    for(int i=0; i < cbo.Items.Count; i++)
    {
        var prop = cbo.Items[i].GetType().GetProperty(cbo.ValueMember);
        if (prop!=null && prop.GetValue(cbo.Items[i], null).ToString() == value)
        {
             cbo.SelectedIndex = i;
             break;
        }
    } 
}

তারপরে কেবল পদ্ধতিটি গ্রাস করুন:

ddl.SelectItemByValue(value);


4

ধরুন, টেস্ট 1, টেস্ট 2, টেস্ট 3 কম্বোবক্স 1 সংগ্রহের সাথে সম্পর্কিত নীচের বিবৃতিটি কাজ করবে।

comboBox1.SelectedIndex = 0; 

এই সবসময় কাজ ... এখানে দেখুন না: stackoverflow.com/questions/12839444/...
JGFMK

4

এই সমাধানটি আমার করা কিছু পরিবর্তন সহ এমএসডিএন ভিত্তিক ।

  • এটি স্ট্রিংয়ের নির্ভুল বা পার্ট সন্ধান করে এবং সেট করে।

    private int lastMatch = 0;
    private void textBoxSearch_TextChanged(object sender, EventArgs e)
    {
        // Set our intial index variable to -1.
        int x = 0;
        string match = textBoxSearch.Text;
        // If the search string is empty set to begining of textBox
        if (textBoxSearch.Text.Length != 0)
        {
            bool found = true;
            while (found)
            {
                if (comboBoxSelect.Items.Count == x)
                {
                    comboBoxSelect.SelectedIndex = lastMatch;
                    found = false;
                }
                else
                {
                    comboBoxSelect.SelectedIndex = x;
                    match = comboBoxSelect.SelectedValue.ToString();
                    if (match.Contains(textBoxSearch.Text))
                    {
                        lastMatch = x;
                        found = false;
                    }
                    x++;
                }
            }
        }
        else
            comboBoxSelect.SelectedIndex = 0;
    }

আমি আশা করি আমি সাহায্য করেছি!


3

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

foreach (DataRowView Row in ComboBox1.Items)
{
    if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}

1

কম্বোবক্সে আপনার সেই সম্পত্তি নেই। আপনার নির্বাচিত আইটেম বা সিলেক্ট ইন্ডেক্স রয়েছে। আপনার যদি কম্বো বাক্সটি পূরণ করার জন্য ব্যবহৃত জিনিসগুলি থাকে তবে আপনি নির্বাচিত আইটেমটি ব্যবহার করতে পারেন।

যদি না হয় আপনি আইটেমগুলির সংগ্রহ (সম্পত্তি আইটেম) পেতে এবং পুনরাবৃত্তি করতে পারেন যতক্ষণ না আপনি নিজের পছন্দ মতো মান পান এবং অন্যান্য বৈশিষ্ট্য সহ এটি ব্যবহার করেন।

আশা করি এটা সাহায্য করবে.


1
_cmbTemplates.SelectedText = "test1"

অথবা হতে পারে

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");

এই কোড সহ আপনি নির্বাচিত আইটেম সম্পত্তিটিতে একটি বর বরাদ্দ করেন ... ইমো কাজ করবে না।
ফ্রেডেরিক গেইসেলস

1
  • কম্বোবক্সে তালিকা আইটেমগুলি গণনা করুন
  • সমান তালিকাভুক্ত সেট কম্বোবক্স পান
  • খুঁজে পাওয়া তালিকাতে তালিকা তালিকা নির্ধারণ করুন।

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


2
আপনি কেন তখন উত্তর হিসাবে এটি সরবরাহ করেছেন?

1

আমি কম্বোবক্স ডেটার বাইন্ডের জন্য কীভ্যালু পেয়ার ব্যবহার করেছি এবং আমি মূল্য দিয়ে আইটেমটি খুঁজতে চেয়েছিলাম যাতে এটি আমার ক্ষেত্রে কাজ করে:

comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");

1

কম্বোবক্সে মাইসেকন্ডঅবজেক্ট (টাইপ মাইবজেক্টের) সন্ধান করুন (মাইওবজেক্টগুলির একটি তালিকা রয়েছে) এবং আইটেমটি নির্বাচন করুন:

foreach (MyObject item in comboBox.Items)
{
   if (item.NameOrID == mySecondObject.NameOrID)
    {
        comboBox.SelectedItem = item;
        break;
    }
}

0
  ListItem li = DropDownList.Items.FindByValue("13001");
  DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);

আপনার ক্ষেত্রে আপনি ব্যবহার করতে পারেন

DropDownList.Items.FindByText("Text");


0

কম্বোবক্স আইটেমের পিতামাত না হওয়া পর্যন্ত সমস্ত পদ্ধতি, কৌশল এবং কোড সেটিং কম্বোবক্স আইটেমের কাজ করবে না।


0

আমি একটি ফাংশন তৈরি করেছি যা মান সূচকটি ফিরিয়ে দেবে

        public static int SelectByValue(ComboBox comboBox, string value)
        {
            int i = 0;
            for (i = 0; i <= comboBox.Items.Count - 1; i++)
            {
                DataRowView cb;
                cb = (DataRowView)comboBox.Items[i];
                if (cb.Row.ItemArray[0].ToString() == value)// Change the 0 index if your want to Select by Text as 1 Index
                {
                    return i;
                }
            }
            return -1;
        }

0

এটি আমার জন্য কাজ করে .....

comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];

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

পরামর্শের জন্য ধন্যবাদ!
জয়দীপ কারিনা


-2

দয়া করে এইভাবে চেষ্টা করুন, এটি আমার পক্ষে কাজ করে:

Combobox1.items[Combobox1.selectedIndex] = "replaced text";

আপনার যাচাই করা উচিত যে নির্বাচিত-সূচকটি প্রথম -1 নয়, বা আরও স্পষ্টভাবে এটি> = 0 এবং <.items.length।
গ্যারি

-3

এটি কাজ করা উচিত

Yourcomboboxname.setselecteditem("yourstring");

এবং যদি আপনি সেট করতে চান ডাটাবেস স্ট্রিং এটি ব্যবহার করুন

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