2015-04-07 3 views
0

В ComboBox.Items есть три варианта: 0.25, 0.50, 0.75. Теперь пользователь записывает значение в ComboBox, например. 1, и теперь выбирает один из этих элементов, нужный comboBox.Text = 1.25 (выбор первого варианта).Отформатированный текст на SelectedIndexChanged в Combobox

public string cmbBxText = string.Empty; 

private void LengthCmbBx_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     this.lengthCmbBx.Text = 
      (Convert.ToDouble(cmbBxText) 
      + Convert.ToDouble(this.lengthCmbBx.SelectedItem)).ToString(); 
    } 

    private void lengthCmbBx_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode != Keys.Up 
      && e.KeyCode != Keys.Right 
      && e.KeyCode != Keys.Left 
      && e.KeyCode != Keys.Down) 
     { 
      cmbBxText = this.lengthCmbBx.Text; 
     } 
    } 

Этот код устанавливает Text = 0.25. Я хочу, например, вывод entered value + selected item. 1.25, когда пользователь вводит 1 и выбирает 0.25. И когда я отлаживаю вышеуказанный код, событие SelectedIndexChanged выполняется дважды, точка разрыва показывает comboBox.Text = 1.25, но не по форме.

+2

Что ваш вопрос/проблема? –

+0

Это нормальное поведение ComboBox. Является ли использование двух отдельных элементов управления (TextBox и ComboBox) вне вопроса? Если вам просто интересно, все в порядке, но это может сэкономить вам много головной боли, пытаясь заставить ComboBox сделать то, что он не собирается делать. –

ответ

0

Просто

private void CmbBx_TextChanged(object sender, EventArgs e) 
    { 
     if (this.cmbBx.Text != string.Empty 
      && !this.cmbBx.Text.Contains(".25") 
      && !this.cmbBx.Text.Contains(".50") 
      && !this.cmbBx.Text.Contains(".75")) 
     { 
      this.cmbBx.Items.Clear(); 

      this.cmbBx.Items.Add(this.cmbBx.Text + ".25"); 
      this.cmbBx.Items.Add(this.cmbBx.Text + ".50"); 
      this.cmbBx.Items.Add(this.cmbBx.Text + ".75"); 
     } 

     if (this.cmbBx.Text == string.Empty) 
     { 
      this.cmbBx.Items.Clear(); 
     } 

     SendKeys.Send("{F4}"); 
    } 
0

Пожалуйста, попробуйте и скажите, ищете ли вы то же самое.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

      index = comboBox1.Items.IndexOf(comboBox1.Text); 

      string temp = comboBox1.Text; 
      StringBuilder newSB = new StringBuilder(temp); 
      newSB = newSB.Remove(0, 1); 
      string newStr = cmbBxText.ToString() + newSB.ToString(); 
      cmbBxText.Clear(); 
      comboBox1.Items.RemoveAt(index); 
      comboBox1.Items.Insert(index, newStr); 

    } 
+0

Что такое cmbBxText? – DhavalR

+0

Это объект StringBuilder. Внутри обработчика событий KeyUp добавьте cmbBxText.Append (comboBox1.Text); в условии if. – Shyju

Смежные вопросы