C#I';我不确定下一步要做什么才能从两个组合框中提取信息
我不确定这个项目下一步该去哪里。计算按钮应使用转换计算,但我不太确定如何进行,并且我无法找到任何相关答案,因为它从两个组合框中提取数据。C#I';我不确定下一步要做什么才能从两个组合框中提取信息,c#,forms,combobox,C#,Forms,Combobox,我不确定这个项目下一步该去哪里。计算按钮应使用转换计算,但我不太确定如何进行,并且我无法找到任何相关答案,因为它从两个组合框中提取数据。 此外,组合框应根据用户选择的内容进行更改。因此,例如,如果用户从第一个组合框中选择“in”,那么他们就不能从第二个组合框中选择“in” 如果有人能给我指出正确的方向,我将非常感激 public partial class Form1 : Form { const double mi_To_km = 1.6093; const double Km
此外,组合框应根据用户选择的内容进行更改。因此,例如,如果用户从第一个组合框中选择“in”,那么他们就不能从第二个组合框中选择“in” 如果有人能给我指出正确的方向,我将非常感激
public partial class Form1 : Form
{
const double mi_To_km = 1.6093;
const double Km_To_mi = 0.6214;
const double ft_To_m = 0.3048;
const double m_To_ft = 3.2808;
const double in_To_cm = 2.54;
const double cm_To_in = 0.3937;
const double ft_To_mi = 1 / mi_To_ft;
const double mi_To_ft = 5280;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
cboFrom.Items.Clear(); //clear the combobox
string[,] measurements =
{ {"in"}, {"ft"}, {"mi"}, {"cm"}, {"m"}, {"km"} };
foreach (string str in measurements)
{
cboFrom.Items.Add(str);
}
foreach (string str in measurements)
{
cboTo.Items.Add(str);
}
}
public bool IsDecimal(TextBox txtEntry, string entry)
{
try
{
Convert.ToDecimal(txtEntry.Text);
return true;
}
catch (FormatException)
{
MessageBox.Show(entry + " must be a decimal value.", "Entry Error");
txtEntry.Focus();
return false;
}
}
private void btnCalculate_Click(object sender, EventArgs e)
{
int from = cboFrom.SelectedIndex;
int to = cboTo.SelectedIndex;
}
private void btnReset_Click(object sender, EventArgs e)
{
foreach (var c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = String.Empty;
}
}
cboFrom.SelectedIndex = 0;
cboTo.SelectedIndex = 0;
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}您可以像这样使用SelectedIndexChanged事件:
private void cboFrom_SelectedIndexChanged(object sender, EventArgs e)
{
btnCalculate.Enabled = true;
if (cboTo.SelectedItem != null)
{
if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
{
btnCalculate.Enabled = false;
}
}
}
private void cboTo_SelectedIndexChanged(object sender, EventArgs e)
{
btnCalculate.Enabled = true;
if (cboFrom.SelectedItem != null)
{
if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
{
btnCalculate.Enabled = false;
}
}
}
要实现这一点,您需要修改代码:
string[] measurements = { "in", "ft", "mi", "cm", "m", "km" };
private void Form1_Load(object sender, EventArgs e)
{
foreach (string str in measurements)
{
cboFrom.Items.Add(str);
}
foreach (string str in measurements)
{
cboTo.Items.Add(str);
}
}
private void cboFrom_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboTo.SelectedItem == null)
{
cboTo.Items.Clear();
foreach (string str in measurements)
{
cboTo.Items.Add(str);
}
cboTo.Items.RemoveAt(cboFrom.SelectedIndex);
}
else
{
if (cboFrom.SelectedItem.ToString() == cboTo.SelectedItem.ToString())
{
cboTo.Items.Clear();
foreach (string str in measurements)
{
cboTo.Items.Add(str);
}
cboTo.Items.RemoveAt(cboFrom.SelectedIndex);
}
}
}
private void cboTo_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboFrom.SelectedItem == null)
{
cboFrom.Items.Clear();
foreach (string str in measurements)
{
cboFrom.Items.Add(str);
}
cboFrom.Items.RemoveAt(cboTo.SelectedIndex);
}
else
{
if (cboTo.SelectedItem.ToString() == cboFrom.SelectedItem.ToString())
{
cboFrom.Items.Clear();
foreach (string str in measurements)
{
cboFrom.Items.Add(str);
}
cboFrom.Items.RemoveAt(cboTo.SelectedIndex);
}
}
}
我想添加以下代码:
private void btnCalculate_Click(object sender, EventArgs e)
{
int from = GetIndex(cboFrom.SelectedItem.ToString());
int to = GetIndex(cboTo.SelectedItem.ToString());
}
private int GetIndex(string _measure)
{
int _index = -1;
switch (_measure)
{
case "in":
_index = 0;
break;
case "ft":
_index = 1;
break;
case "mi":
_index = 2;
break;
case "cm":
_index = 3;
break;
case "m":
_index = 4;
break;
case "km":
_index = 5;
break;
}
return _index;
}
休息一下。重新思考。会发生什么?如果两个值相同,这真的是个问题吗?为什么不让用户随意地来回选择和更正选项呢?现在看看selectionchanged事件!在这里,你可以测试选择,然后做出反应:发送警告,启用或禁用按钮,或者干脆放手:从ft->ft不是世界末日。如果从“from”组合框中选择了“in”,你将如何从“To”组合框中删除“in”?为btnCalculate\u单击添加代码的最佳方法是什么,现在一切都正常了,只是我在从组合框中删除项目时仍有问题。您能详细说明如何删除项目吗?