ما هي أبسط طريقة للحصول على النص المحدد في مربع التحرير والسرد يحتوي على إدخالات نصية فقط؟

StackOverflow https://stackoverflow.com/questions/3721430

سؤال

يحتوي WPF Combobox على إدخالات نصية فقط. سيقوم المستخدم بتحديد واحد. ما هي أبسط طريقة للحصول على نص ComboBoxItem المحدد؟ الرجاء الإجابة في كل من C# و Visual Basic. ها هو combobox الخاص بي:

<ComboBox Name="cboPickOne">
    <ComboBoxItem>This</ComboBoxItem>
    <ComboBoxItem>should be</ComboBoxItem>
    <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

بالمناسبة ، أعرف الإجابة ولكن لم يكن من السهل العثور عليها. اعتقدت أنني سأقوم بنشر السؤال لمساعدة الآخرين. المراجعة: لقد تعلمت إجابة أفضل. عن طريق إضافة SelectValuePath = "المحتوى" كسمة Combobox لم أعد بحاجة إلى رمز الصب القبيح. انظر إجابة آندي أدناه.

هل كانت مفيدة؟

المحلول

<ComboBox 
  Name="cboPickOne"
  SelectedValuePath="Content"
  >
  <ComboBoxItem>This</ComboBoxItem>
  <ComboBoxItem>should be</ComboBoxItem>
  <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

في الكود:

   stringValue = cboPickOne.SelectedValue.ToString()

نصائح أخرى

فقط لتوضيح إجابات Heinzi و Jim Brissom هنا هي الرمز فيالبصرية الأساسية:

Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()

و ج#:

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();

شكرًا!

إذا كنت تعرف بالفعل أن محتوى comboBoxitem الخاص بك سيكون فقط سلاسل ، فما عليك سوى الوصول إلى المحتوى كسلسلة:

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();

لقد فعلت هذا للتو.

string SelectedItem = MyComboBox.Text;

إذا قمت بإضافة عناصر في combobox كما

youComboBox.Items.Add("Data"); 

ثم استخدم هذا:

youComboBox.SelectedItem; 

ولكن إذا قمت بإضافة عناصر عن طريق ربط البيانات ، استخدم هذا:

DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());

استخدام cboPickOne.Text يجب أن يعطيك السلسلة.

var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;

Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)

منذ نحن أعرف أن المحتوى عبارة ToString() استدعاء الطريقة.

استخدم ال DataRowView.Row.Item[Index] أو ItemArray[Index] خاصية للحصول على SelectedItem, ، حيث يكون الفهرس هو فهرس العمود في DataTable يستخدم ك itemSource ل combobox. في حالتك سيكون 0. بدلاً من الفهرس ، يمكنك أيضًا تمرير اسم العمود أيضًا:

VB:

Dim sItem As String=DirectCast(cboPickOne.SelectedItem, DataRowView).Row.Item(1).ToString()

ج#

String sItem=((DataRowView)cboPickOne.SelectedItem).Row.Item[1].ToString();

للحصول على محدد Value يمكنك استخدامه:

VB:

Dim sValue As String=cboPickOne.SelectedValue.ToString()

ج#

String sValue=cboPickOne.SelectedValue.ToString();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top