Ctrl-Left or Ctrl-Right을 사용하여 Windows Forms 응용 프로그램에서 콤보 상자의 선택된 값을 변경하려고 할 때 상황이 발생합니다. 그러나 콤보 상자가 양식의 선택된 컨트롤 인 경우에는 작동하지 않습니다. 선택한 값은 새 값으로 설정된 후 이전 값으로 설정됩니다. 콤보 상자가 선택된 컨트롤이 아니면 모든 것이 잘 동작합니다. 내 응용 프로그램에서는 마우스로 값을 변경할 수 있기 때문에 콤보가 포커스를받을 수 있습니다. 실제로 원하는 값을 변경하기 전에 양식에서 다른 컨트롤을 선택하여 원하는 결과를 얻을 수 있지만이 솔루션을별로 좋아하지 않습니다.C# 콤보 상자 선택한 인덱스가 변경되었습니다. 이전 값
두 가지 질문이 있습니다. 콤보 상자가 선택한 컨트롤 인 경우 selectedIndexChanged 이벤트가 이전 값으로 실행되는 이유는 무엇입니까? 어떻게 피할 수 있습니까? 아니면 좋은 해결 방법이 아닐 수 있습니까? 또한 내 문제를 설명하기위한 몇 가지 코드가 있습니다. 폼에 콤보 상자와 서식있는 텍스트 상자를 놓고 Form1.cs에서 아래 코드를 복사하면 내 문제가 발생할 수 있습니다. 당신은
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndex = 0;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.Left))
{
DoUpdate();
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void DoUpdate()
{
int index = Convert.ToInt32(comboBox1.SelectedItem);
index++;
if (comboBox1.Focused)
richTextBox1.Select();
comboBox1.SelectedItem = index.ToString();
}
private void SetComboValue(int value)
{
comboBox1.SelectedItem = value.ToString();
richTextBox1.AppendText(string.Format("Set value {0} \r\n", value.ToString()));
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
richTextBox1.AppendText(string.Format("Selected index changed before {0}\r\n", comboBox1.SelectedItem));
SetComboValue(Convert.ToInt32(comboBox1.SelectedItem));
richTextBox1.AppendText(string.Format("Selected index changed after {0}\r\n", comboBox1.SelectedItem));
}
}
무엇 콤보 지수를 얻기 위해 appropiate의 메서드를 사용하는 방법에 대한 : selectedIndex의를. 그게 고칠 수 있니? – RvdK