如何根据 C# 中另一个组合框的选定值更改组合框中的项
本文关键字:组合 另一个 何根 | 更新日期: 2023-09-27 18:36:01
我再次需要你的帮助。我有两个组合框,一个叫cmbRFR,一个叫cmbSubRFR。cmbRFR 中的项目包括:
- 零
- 定位
- 假象
- 患者编号
- 曝光误差
- 测试图像
我需要设置它,以便当用户选择 cmbRFR 中的一个项目时,它会更改 cmbSubRFR 中显示的项目。 cmbSubRFR 应按如下方式工作。
当用户选择 Null 时,组合框还应显示 Null/空白项。
当用户选择定位时:
- 解剖学截止
- 旋转
- 视野受阻
- 管材或网格定心
- 运动
当用户选择ARTEFACT时,组合框也应显示ARTEFACT。
当用户选择患者 ID 时:
- 不正确的患者
- 不正确的研究/侧面
- 用户定义的错误
当用户选择"曝光错误"时:
- 曝光不足
- 过度曝光
- 暴露故障
当用户选择"测试映像"时:
- 质量管理
- 服务/测试
我没有为此提供代码,因为我不知道如何做到这一点。我环顾了一下与此类似的其他一些问题,但是我没有发现任何可能对我有帮助的问题。
任何建议都会有所帮助。
public partial class Form1 : Form
{
string cmbRFR_item;
public Form1()
{
InitializeComponent();
}
private void change_cmbSubRFR_items()
{
cmbSubRFR.Items.Clear();//Clear all items in cmbSubRFR comboBox.
switch (cmbRFR_item)//Adding your new items to cmbSubRFR.
{
case "Null":
cmbSubRFR.Items.Add("Null/a blank item");
cmbSubRFR.Text = "Null/a blank item";
break;
case "POSITIONING":
cmbSubRFR.Items.Add("Anatomy cut-off");
cmbSubRFR.Items.Add("Rotation");
cmbSubRFR.Items.Add("Obstructed view");
cmbSubRFR.Items.Add("Tube or grid centering");
cmbSubRFR.Items.Add("Motion");
cmbSubRFR.Text = "";
break;
case "ARTEFACT":
cmbSubRFR.Items.Add("ARTEFACT");
cmbSubRFR.Text = "ARTEFACT";
break;
case "PATIENT ID":
cmbSubRFR.Items.Add("Incorrect Patient");
cmbSubRFR.Items.Add("Incorrect Study/Side");
cmbSubRFR.Items.Add("User Defined Error");
cmbSubRFR.Text = "";
break;
case "EXPOSURE ERROR":
cmbSubRFR.Items.Add("Under Exposure");
cmbSubRFR.Items.Add("Over Exposure");
cmbSubRFR.Items.Add("Exposure Malfunction");
cmbSubRFR.Text = "";
break;
case "TEST IMAGES":
cmbSubRFR.Items.Add("Quality Control");
cmbSubRFR.Items.Add("Service/Test");
cmbSubRFR.Text = "";
break;
}
}
private void cmbRFR_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbRFR_item!= cmbRFR.SelectedItem.ToString())//This will control your changes in cmbRFR about selected item and call change_cmbSubRFR_items()
{
cmbRFR_item = cmbRFR.SelectedItem.ToString();
change_cmbSubRFR_items();
}
}
}
有两种方法可以解决这个问题。首先是"正确的方法",即设置 DataSource 属性。为每个组合框创建列表,如下所示:
var _positioningItems = new List<string> { "Anatomy cut-off", "Rotation", "Obstructed view" };
var _patientIdItems = new List<string> { "Incorrect Patient", "Incorrect Study/Side", "User Defined Error" };
然后订阅 cmbRFR
组合框上的 OnSelectedIndexChange
事件,然后在事件处理程序中,将数据源设置为相应的列表。
另一种方法(我不赞成)是为每个cmbRFR
项创建组合框,然后将它们全部隐藏,只向用户显示适当的组合框。订阅cmbRFR
组合框上的OnSelectedIndexChange
事件,并隐藏/显示相应的组合框。