我试图从组合框中获取数据,但它不起作用
I tried to get data from combobox but it doesn't work
我使用此代码..但没有任何反应..我已经尝试寻找解决方案但它仍然发生..当我从 numericUpDown 更改值时 PriceTxt.Text 没有改变..我希望有人能向我解释为什么会发生这种情况以及如何解决它..我不知道..
private void quantityTxt_ValueChanged(object sender, EventArgs e)
{
string selected = this.DescTxt.GetItemText(this.DescTxt.SelectedItem);
if (DescTxt.Text == "SET A -AYAM GORENG + FRIES + AIR")
{
MessageBox.Show((5 * quantityTxt.Value).ToString());
PriceTxt.Text = (5 * quantityTxt.Value).ToString();
}
else if (selected == "SET B -AYAM GORENG + NUGGETS + AIR")
{
MessageBox.Show((10 * quantityTxt.Value).ToString());
PriceTxt.Text = (10 * quantityTxt.Value).ToString();
}
else if (selected == "SET C -AYAM GORENG + MEATBALL + AIR")
{
MessageBox.Show((15 * quantityTxt.Value).ToString());
PriceTxt.Text = (15 * quantityTxt.Value).ToString();
}
}
你可以直接使用
string selected = DescTxt.SelectedItem.ToString();
或
string selected = DescTxt.Text;
它能解决您的问题吗?
// Form.Load event. Here ComboBox fills with some values
// and subscription to ComboBox.SelectedValueChanged event provided
private void OnFormLoad(object sender, EventArgs e)
{
string[] items = new[]
{
"SET A -AYAM GORENG + FRIES + AIR",
"SET B -AYAM GORENG + FRIES + AIR",
"SET C -AYAM GORENG + FRIES + AIR"
};
myComboBox.Items.AddRange(items);
// Subscribe to SelectedValueChanged event
myComboBox.SelectedValueChanged += OnSelectedValueChange;
}
// Our SelectedValueChanged handler
private void OnSelectedValueChange(object sender, EventArgs e)
{
// Getting content of new selected in ComboBox item
string selectedItem = myComboBox.SelectedItem.ToString();
int switchableValue; // Your 5, 10, 15
// Check in proper way
switch (selectedItem)
{
case "SET A -AYAM GORENG + FRIES + AIR":
switchableValue = 5;
break;
case "SET B -AYAM GORENG + FRIES + AIR":
switchableValue = 10;
break;
case "SET C -AYAM GORENG + FRIES + AIR":
switchableValue = 15;
break;
default:
// Maybe reset some values if needed before return
return;
}
// Get your neccesarry result value, converted to string through interpolation
string someResult = $"{switchableValue * quantityTxt.Value}";
// Do work with result value
MessageBox.Show(someResult);
PriceTxt.Text = someResult;
}
更新:
我的示例处理 ComboBox 项目更改,而不是 NumericUpDown 值更改(至少我是盲人)。
如果您需要对 NumericUpDown 控件的依赖 - 您应该将订阅更改为 NumericUpDown.ValueChanged 并添加对 null ComboBox.SelectedItem 值的检查:
private void OnFormLoad(object sender, EventArgs e)
{
// Still fill items up there...
// Instead of ComboBox.SelectedValueChanged event subscription
// myComboBox.SelectedValueChanged += OnSelectedValueChange;
// Subscribe to NumericUpDown.ValueChanged event:
quantityTxt.ValueChanged += OnQuantityValueChange;
}
private void OnQuantityValueChange(object sender, EventArgs e)
{
// Add check for null to ComboBox.SelectedItem property
// by appeding '?' at end of it
string selectedItem = myComboBox.SelectedItem?.ToString();
// .. rest of code is the same.
// If ComboBox.SelectedItem would be null -
// method would break in switch statement by 'default' behaviour.
}
或者您可以将 ComboBox.SelectedValueChanged 和 NumericUpDown.ValueChanged 事件组合到一个处理程序中:
private void OnDescTxtOrQuantityTxtChange(object sender, EventArgs e)
{
string selectedItem = myComboBox.SelectedItem?.ToString();
int switchableValue;
switch (selectedItem)
{
case "SET A -AYAM GORENG + FRIES + AIR":
switchableValue = 5;
break;
case "SET B -AYAM GORENG + FRIES + AIR":
switchableValue = 10;
break;
case "SET C -AYAM GORENG + FRIES + AIR":
switchableValue = 15;
break;
default:
// MessageBox.Show("You didn't select Description!")
return;
}
// Add check for NumericUpDown '0' value if needed,
// cuz multiplying 'switchableValue' (5/10/15) to 0 will result with 0
if (quantityTxt.Value == 0)
{
// MessageBox.Show("You didn't select Quantity!")
return;
}
string someOutput = $"{switchableValue * quantityTxt.Value}";
MessageBox.Show(someOutput);
PriceTxt.Text = someOutput;
}
并订阅这两个事件:
myComboBox.SelectedValueChanged += OnDescTxtOrQuantityTxtChange;
quantityTxt.ValueChanged += OnDescTxtOrQuantityTxtChange;
我使用此代码..但没有任何反应..我已经尝试寻找解决方案但它仍然发生..当我从 numericUpDown 更改值时 PriceTxt.Text 没有改变..我希望有人能向我解释为什么会发生这种情况以及如何解决它..我不知道..
private void quantityTxt_ValueChanged(object sender, EventArgs e)
{
string selected = this.DescTxt.GetItemText(this.DescTxt.SelectedItem);
if (DescTxt.Text == "SET A -AYAM GORENG + FRIES + AIR")
{
MessageBox.Show((5 * quantityTxt.Value).ToString());
PriceTxt.Text = (5 * quantityTxt.Value).ToString();
}
else if (selected == "SET B -AYAM GORENG + NUGGETS + AIR")
{
MessageBox.Show((10 * quantityTxt.Value).ToString());
PriceTxt.Text = (10 * quantityTxt.Value).ToString();
}
else if (selected == "SET C -AYAM GORENG + MEATBALL + AIR")
{
MessageBox.Show((15 * quantityTxt.Value).ToString());
PriceTxt.Text = (15 * quantityTxt.Value).ToString();
}
}
你可以直接使用
string selected = DescTxt.SelectedItem.ToString();
或
string selected = DescTxt.Text;
它能解决您的问题吗?
// Form.Load event. Here ComboBox fills with some values
// and subscription to ComboBox.SelectedValueChanged event provided
private void OnFormLoad(object sender, EventArgs e)
{
string[] items = new[]
{
"SET A -AYAM GORENG + FRIES + AIR",
"SET B -AYAM GORENG + FRIES + AIR",
"SET C -AYAM GORENG + FRIES + AIR"
};
myComboBox.Items.AddRange(items);
// Subscribe to SelectedValueChanged event
myComboBox.SelectedValueChanged += OnSelectedValueChange;
}
// Our SelectedValueChanged handler
private void OnSelectedValueChange(object sender, EventArgs e)
{
// Getting content of new selected in ComboBox item
string selectedItem = myComboBox.SelectedItem.ToString();
int switchableValue; // Your 5, 10, 15
// Check in proper way
switch (selectedItem)
{
case "SET A -AYAM GORENG + FRIES + AIR":
switchableValue = 5;
break;
case "SET B -AYAM GORENG + FRIES + AIR":
switchableValue = 10;
break;
case "SET C -AYAM GORENG + FRIES + AIR":
switchableValue = 15;
break;
default:
// Maybe reset some values if needed before return
return;
}
// Get your neccesarry result value, converted to string through interpolation
string someResult = $"{switchableValue * quantityTxt.Value}";
// Do work with result value
MessageBox.Show(someResult);
PriceTxt.Text = someResult;
}
更新: 我的示例处理 ComboBox 项目更改,而不是 NumericUpDown 值更改(至少我是盲人)。 如果您需要对 NumericUpDown 控件的依赖 - 您应该将订阅更改为 NumericUpDown.ValueChanged 并添加对 null ComboBox.SelectedItem 值的检查:
private void OnFormLoad(object sender, EventArgs e)
{
// Still fill items up there...
// Instead of ComboBox.SelectedValueChanged event subscription
// myComboBox.SelectedValueChanged += OnSelectedValueChange;
// Subscribe to NumericUpDown.ValueChanged event:
quantityTxt.ValueChanged += OnQuantityValueChange;
}
private void OnQuantityValueChange(object sender, EventArgs e)
{
// Add check for null to ComboBox.SelectedItem property
// by appeding '?' at end of it
string selectedItem = myComboBox.SelectedItem?.ToString();
// .. rest of code is the same.
// If ComboBox.SelectedItem would be null -
// method would break in switch statement by 'default' behaviour.
}
或者您可以将 ComboBox.SelectedValueChanged 和 NumericUpDown.ValueChanged 事件组合到一个处理程序中:
private void OnDescTxtOrQuantityTxtChange(object sender, EventArgs e)
{
string selectedItem = myComboBox.SelectedItem?.ToString();
int switchableValue;
switch (selectedItem)
{
case "SET A -AYAM GORENG + FRIES + AIR":
switchableValue = 5;
break;
case "SET B -AYAM GORENG + FRIES + AIR":
switchableValue = 10;
break;
case "SET C -AYAM GORENG + FRIES + AIR":
switchableValue = 15;
break;
default:
// MessageBox.Show("You didn't select Description!")
return;
}
// Add check for NumericUpDown '0' value if needed,
// cuz multiplying 'switchableValue' (5/10/15) to 0 will result with 0
if (quantityTxt.Value == 0)
{
// MessageBox.Show("You didn't select Quantity!")
return;
}
string someOutput = $"{switchableValue * quantityTxt.Value}";
MessageBox.Show(someOutput);
PriceTxt.Text = someOutput;
}
并订阅这两个事件:
myComboBox.SelectedValueChanged += OnDescTxtOrQuantityTxtChange;
quantityTxt.ValueChanged += OnDescTxtOrQuantityTxtChange;