C# 由组合框中的id决定的两个不同组合值
我有两个组合框,一个文本框和一个按钮 我希望文本框中的值通过我在C# 由组合框中的id决定的两个不同组合值,c#,C#,我有两个组合框,一个文本框和一个按钮 我希望文本框中的值通过我在Combobox1中的选择从Combobox2设置。“List Machnie”中的id应该会更改文本框中应该查看的内容。比如说, 如果我在combobox1中选择“机器1”(id=1)并在Combox2中选择“纱线1”,则它应该在文本框中显示数字“1” 如果我在combobox1中选择“机器2”(id=2)并在Combox2中选择“纱线1”,则它应该在文本框中显示数字“2” 如果我在combobox1中选择“机器1”(id=1)
Combobox1
中的选择从Combobox2
设置。“List Machnie”中的id
应该会更改文本框中应该查看的内容。比如说,
- 如果我在
中选择“机器1”(id=1)并在combobox1
中选择“纱线1”,则它应该在文本框中显示数字“1”Combox2
- 如果我在
中选择“机器2”(id=2)并在combobox1
中选择“纱线1”,则它应该在文本框中显示数字“2”Combox2
- 如果我在
中选择“机器1”(id=1)并在combobox1
中选择“纱线2”,则它应该在文本框中显示数字“3”Combox2
- 如果我在
中选择“机器2”(id=2)并在combobox1
中选择“纱线2”,它应该在文本框中显示数字“4”Combox2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
List<Machine> ft = new List<Machine>();
ft.Add(new Machine() { id = 1, bredd = 10, hojd = 15, Name = "Machine 1" });
ft.Add(new Machine() { id = 2, bredd = 20, hojd = 25, Name = "Machine 2" });
ft.Add(new Machine() { id = 1, bredd = 30, hojd = 35, Name = "Machine 3" });
ft.Add(new Machine() { id = 2, bredd = 40, hojd = 45, Name = "Machine 4" });
comboBox2.DataSource = ft;
comboBox2.DisplayMember = "Name";
List<Yarn> ft3 = new List<Yarn>();
ft3.Add(new Yarn() { meter = 1, weight = 2, Name = "Yarn 1" });
ft3.Add(new Yarn() { meter = 3, weight = 4, Name = "Yarn 2" });
comboBox1.DataSource = ft3;
comboBox1.DisplayMember = "Name";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
Machine ft1 = comboBox2.SelectedItem as Machine;
textBox1.Text = Convert.ToString(ft1.id);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
}
class Machine
{
public int id { get; set; }
public int bredd { get; set; }
public int hojd { get; set; }
public string Name { get; set; }
}
class Yarn
{
public int meter { get; set; }
public int weight { get; set; }
public string Name { get; set; }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
List ft=新列表();
ft.Add(new Machine(){id=1,bredd=10,hojd=15,Name=“Machine 1”});
ft.Add(new Machine(){id=2,bredd=20,hojd=25,Name=“Machine 2”});
ft.Add(new Machine(){id=1,bredd=30,hojd=35,Name=“Machine 3”});
ft.Add(new Machine(){id=2,bredd=40,hojd=45,Name=“Machine 4”});
comboBox2.DataSource=ft;
comboBox2.DisplayMember=“Name”;
List ft3=新列表();
ft3.添加(新纱线(){meter=1,weight=2,Name=“纱线1”});
ft3.添加(新纱线(){meter=3,weight=4,Name=“纱线2”});
comboBox1.DataSource=ft3;
comboBox1.DisplayMember=“Name”;
}
私有void Form1\u加载(对象发送方、事件参数e)
{
}
私有无效组合框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
}
private void comboBox2\u SelectedIndexChanged(对象发送方,事件参数e)
{
Machine ft1=comboBox2.选择editem作为Machine;
textBox1.Text=Convert.ToString(ft1.id);
}
私有void textBox1\u TextChanged(对象发送方,事件参数e)
{
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
}
}
类机器
{
公共int id{get;set;}
公共int bredd{get;set;}
public int hojd{get;set;}
公共字符串名称{get;set;}
}
等级纱线
{
公共整数表{get;set;}
公共整数权重{get;set;}
公共字符串名称{get;set;}
}
差不多解决了,谢谢大家。但是,当先更改“ComboBox2”,然后再更改“ComboBox1”时,我需要再次更改ComboBox2,以使用正确的值刷新/更新文本框
Yarn ft4 = comboBox1.SelectedItem as Yarn;
Machine ft1 = comboBox2.SelectedItem as Machine;
if (ft1.id == 1)
{
textBox1.Text = Convert.ToString(ft4.weight);}
else if (ft1.id == 2)
{
YarnSizeTextbox.Text = Convert.ToString(ft3.meter);
}
我认为实现这一点最简单的方法是在两个类中都添加一个属性,比如定义项的合并值的CombineValue 试一试:
class Machine
{
public int id { get; set; }
public int bredd { get; set; }
public int hojd { get; set; }
public string Name { get; set; }
public int CombineValue { get; set; }
}
class Yarn
{
public int meter { get; set; }
public int weight { get; set; }
public string Name { get; set; }
public int CombineValue { get; set; }
}
创建对象并填充它们:
List<Machine> ft = new List<Machine>();
ft.Add(new Machine() { id = 1, bredd = 10, hojd = 15, Name = "Machine 1", CombineValue = 1 });
ft.Add(new Machine() { id = 2, bredd = 20, hojd = 25, Name = "Machine 2", CombineValue = 2 });
ft.Add(new Machine() { id = 1, bredd = 30, hojd = 35, Name = "Machine 3", CombineValue = 3 });
ft.Add(new Machine() { id = 2, bredd = 40, hojd = 45, Name = "Machine 4", CombineValue = 4 });
cmbMachine.DataSource = ft;
cmbMachine.DisplayMember = "Name";
List<Yarn> ft3 = new List<Yarn>();
ft3.Add(new Yarn() { meter = 1, weight = 2, Name = "Yarn 1", CombineValue = 1 });
ft3.Add(new Yarn() { meter = 3, weight = 4, Name = "Yarn 2", CombineValue = 2 });
cmbYarn.DataSource = ft3;
cmbYarn.DisplayMember = "Name";
CombinValues(); // <- See below :
从两个组合的SelectionChangeCommitted事件调用函数:
private void cmbMachine_SelectionChangeCommitted(object sender, EventArgs e)
{
CombinValues();
}
private void cmbYarn_SelectionChangeCommitted(object sender, EventArgs e)
{
CombinValues();
}
就这些。祝你好运。你面临什么问题?“if.id=1.Show(meter=1)、if.id=2.Show(meter=2)”出现错误。我希望它显示“meter=”中的值1,具体取决于另一个组合框中的id。很清楚你想要什么。。。但现在还不清楚你面临什么问题,所以不确定该提出什么解决方案。在
comboBox1\u SelectedIndexChanged
中,您应该检查两个组合框的值,然后确定文本框的值。我不知道如何写“meter=1”,if.id=2.Show(meter=2)这样就可以了。另外,当查看“comboBox1\u SelevtedIndexChanged”时,我不知道如何调用id,所以它会显示“meter”中的数字我试图用你的代码重现这个问题,但代码甚至没有编译…其中有很多错误…你能分享没有任何错误的代码吗?谢谢!你刚刚解决了我的问题!再次感谢你。很高兴听到这个消息,感谢你的支持。继续。
private void cmbMachine_SelectionChangeCommitted(object sender, EventArgs e)
{
CombinValues();
}
private void cmbYarn_SelectionChangeCommitted(object sender, EventArgs e)
{
CombinValues();
}