ما هي أبسط طريقة للحصول على النص المحدد في مربع التحرير والسرد يحتوي على إدخالات نصية فقط؟
-
03-10-2019 - |
سؤال
يحتوي 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();