먼저 내 영어로 죄송합니다. 내 초급 프로그래머는 C#에서 VS Express 2013을 사용합니다.ComboBox 상품 반품 색인
이것은 내 간단한 문제입니다. 내부에 두 개의 항목이있는 콤보 박스 (cboMantello)가 있습니다. 그런 다음 선택한 항목의 속성을 사용하는 버튼이 있고이를 내 캐릭터 통계에 추가합니다. 다른 단추는 해당 특성을 제거합니다.
사용자가 첫 번째 스팸 메일을 스팸하지 않도록하려면 내 combobox.enabled를 false로 설정하십시오. 이 시점에서 문제가 발생합니다. 콤보 박스를 비활성화하면 목록의 첫 번째 항목을 반환하므로 두 번째 항목을 선택하고 "equipe"단추를 누르면 속성이 추가되지만 콤보 상자가 첫 번째 항목으로 전환됩니다. 그래서 "remove "버튼을 누르면 코드가 첫 번째 항목 속성을 제거합니다.
나는 enabled = false 단계에서 두 번째 항목에서 frezze하는 방법을 알지 못합니다.
도움을 주셔서 감사 드리며, 저의 문법적 "공포"에 다시 한번 감사드립니다!
Heres는 내 코드 : 당신이 bntMantello
의 클릭 이벤트에 UpdateListaMantelliInventarioUI()
를 호출 할 때 특별히 라인 cboMantello.DataSource = mantelli;
및 cboMantello.SelectedIndex = 0;
, 그 내용을 변경하기 때문에 콤보 상자가 재설정됩니다
private void UpdateListaMantelliInventarioUI()
{
List<Mantello> mantelli = new List<Mantello>();
foreach (OggettoInventario oggettoInventario in _player.Inventario)
{
if (oggettoInventario.Dettagli is Mantello)
{
if (oggettoInventario.Quantità > 0)
{
mantelli.Add((Mantello)oggettoInventario.Dettagli);
}
}
}
if (mantelli.Count == 0)
{
cboMantello.Enabled = false;
}
else
{
cboMantello.DataSource = mantelli;
cboMantello.DisplayMember = "Nome";
cboMantello.ValueMember = "ID";
cboMantello.SelectedIndex = 0;
}
}
private void btMantello_Click(object sender, EventArgs e)
{
Mantello mantellocorrente = (Mantello)cboMantello.SelectedItem;
_player.DifesaMagica = (_player.DifesaMagica + mantellocorrente.AggiungeDifesaMagica);
lblVesteDifesa.Text = "(+" + mantellocorrente.AggiungeDifesaMagica.ToString() + ")";
toolTip1.SetToolTip(lblVesteDifesa, mantellocorrente.Nome.ToString());
_player.Mana = (_player.Mana + mantellocorrente.AggiungeMana);
lblVesteMana.Text = "(+" + mantellocorrente.AggiungeMana.ToString() + ")";
toolTip1.SetToolTip(lblVesteMana, mantellocorrente.Nome.ToString());
_player.Evasione = (_player.Evasione + mantellocorrente.AggiungeEvasione);
lblVesteEvasione.Text = "(+" + mantellocorrente.AggiungeEvasione.ToString() + ")";
toolTip1.SetToolTip(lblVesteEvasione, mantellocorrente.Nome.ToString());
btMantello.Enabled = false;
btTogliMantello.Enabled = true;
cboMantello.Enabled = false;
UpdatePlayerStats();
UpdateListaMantelliInventarioUI();
}
private void btTogliMantello_Click(object sender, EventArgs e)
{
Mantello mantellocorrente = (Mantello)cboMantello.SelectedItem;
if (btMantello.Enabled == false)
{
btTogliMantello.Enabled = true;
_player.DifesaMagica = (_player.DifesaMagica - mantellocorrente.AggiungeDifesaMagica);
lblVesteDifesa.Text = "";
_player.Mana = (_player.Mana - mantellocorrente.AggiungeMana);
lblVesteMana.Text = "";
_player.Evasione = (_player.Evasione - mantellocorrente.AggiungeEvasione);
lblVesteEvasione.Text = "";
UpdatePlayerStats();
btMantello.Enabled = true;
cboMantello.Enabled = true;
}
btTogliMantello.Enabled = false;
}
. ComboBox를 비활성화하면 선택한 항목이 변경되어서는 안됩니다. –
나는 그것이 ... 일어나는 이유를 알고있다. –
당신이 그것을 비활성화 한 후에, 당신은'UpdateListaMantelliInventarioUI()'를 호출하고'DataSource'를 업데이트 할까? –