文字列を作成していますが、コードは次のようになっています。
String status = "The status of my combobox is " + comboBoxTest.SelectedText
VS2010でWinFormを使用しています
結果は次のようになります
「私のコンボボックスのステータスは」
ドキュメントから:
SelectedTextプロパティを使用して、ComboBoxコントロールで現在選択されているテキストを取得または変更できます。ただし、ユーザーの操作により、選択内容が自動的に変更される可能性があることに注意してください。たとえば、ボタンClickイベントハンドラーでSelectedText値を取得すると、値は空の文字列になります。これは、入力フォーカスがコンボボックスからボタンに移動すると、選択が自動的にクリアされるためです。
コンボボックスがフォーカスを失うと、選択ポイントがテキストの先頭に移動し、選択されたテキストは選択解除されます。この場合、SelectedTextプロパティを取得すると空の文字列が取得され、SelectedTextプロパティを設定すると、指定された値がテキストの先頭に追加されます。
私は5分前にこの問題に直面しています。
解決策(Visual Studio 2005を使用)は次のとおりです。
myString = comboBoxTest.GetItemText(comboBoxTest.SelectedItem);
私が間違っていたら許してください。
私はあなたが必要ではないと思いますがSelectedText
、あなたは必要かもしれません
String status = "The status of my combobox is " + comboBoxTest.Text;
選択したアイテムを取得するには、comboBoxのSELECTEDITEMプロパティを使用する必要があります。これはオブジェクトであるため、文字列に割り当てる場合は、ToString()メソッドを使用して文字列に変換する必要があります。
string myItem = comboBox1.SelectedItem.ToString(); //this does the trick
これを試して:
String status = "The status of my combobox is " + comboBoxTest.text;
たとえば、ラベルのテキストを変更したい場合、問題にどのようにアプローチするかを次に示します。
private void comboBoxtest_SelectedIndexChanged(object sender, EventArgs e)
{
var combotext = comboBoxtest.Text;
var status = "The status of my combo box is" + combotext;
label1.Text = status;
}
ComboboxをKeyValuePairのようなものにバインドし、コンストラクターのプロパティをそのようにすると...:
DataSource = dataSource,
DisplayMember = "Value",
ValueMember = "Key"
dataSource
KeyValuePairタイプです。
あなたはこれをしなければならないことになります...
string v = ((KeyValuePair)((ComboBox)c).SelectedItem).Value;
(私は動的フォームを持っていました-どこc
にタイプがありましたControl
か-それでそれをComboBoxにキャストしなければなりませんでした)
ComboBox
編集可能なテキストボックス(またはスタイル)を使用してのテキストを知りたいだけの場合は、ComboBoxStyle.DropDown
次を使用できます。
string str = comboBox.SelectedItem != null ?
comboBox.GetItemText(comboBox.SelectedItem) : comboBox.Text;
またはこのコードを試してください
String status = "The status of my combobox is " + comboBoxTest.SelectedItem.ToString();