我正在尝试显示基于在Windows窗体组合框中选择的选项的if语句的结果。 当if语句放在它自己的类中时,我遇到了问题,它与表单分开并且总是只返回else值。我把组合框公开了。 我的代码如下。
public void button1_Click(object sender, EventArgs e)
{
xRayData xRayData1 = new xRayData();
string shiftChangeValue;
shiftChangeValue = xRayData1.shiftChange();
label2.Text = shiftChangeValue;
}
public string shiftChange()
{
frmSWChange frmSWChange1 = new frmSWChange();
string shiftLetter;
if (frmSWChange1.cbShift.Text == "Day")
{
shiftLetter = "D";
}
else if (frmSWChange1.cbShift.Text == "Night")
{
shiftLetter = "N";
}
else if (frmSWChange1.cbShift.Text == "Morning")
{
shiftLetter = "M";
}
else
{
shiftLetter = "ERROR";
}
return shiftLetter;
}
答案 0 :(得分:1)
使用Selected...
获取组合框中的所选项目
frmSWChange1.cbShift.SelectedItem // gets the binded item
frmSWChange1.cbShift.SelectedText // gets the display text of the selected item
frmSWChange1.cbShift.SelectedValue // gets the value of the selected item
答案 1 :(得分:0)
在你的方法中查看这一行
frmSWChange frmSWChange1 = new frmSWChange();
您正在创建表单的新实例,并且此实例与您所做的选择无关,这将不会在组合框中选择任何文本。您需要的是对当前正在进行这些选择的表单实例的引用。
答案 2 :(得分:0)
frmSWChange.cs
namespace X_Ray
{
public partial class frmSWChange : Form
{
public frmSWChange()
{
InitializeComponent();
frmSWChange1
}
private void btnReturnToMainMenu_Click(object sender, EventArgs e)
{
new frmMainMenu().Show();
this.Close();
}
public void button1_Click(object sender, EventArgs e)
{
string shiftChangeValue;
label1.Text = mtxtScrapDate.Text;
derpderp1 = cbShift.SelectedText;
xRayData xRayData1 = new xRayData();
shiftChangeValue = xRayData1.shiftChange();
label2.Text = shiftChangeValue;
}
}
}
xRayData.cs
namespace X_Ray
{
class xRayData
{
#region Methods
public string shiftChange()
{
frmSWChange frmSWChange1 = new frmSWChange();
string shiftLetter;
if (frmSWChange1.cbShift.SelectedText == "Day")
{
shiftLetter = "D";
}
else if (frmSWChange1.cbShift.SelectedText == "Night")
{
shiftLetter = "N";
}
else if (frmSWChange1.cbShift.SelectedText == "Morning")
{
shiftLetter = "M";
}
else
{
shiftLetter = "ERROR";
}
return shiftLetter;
}
#endregion
}
}