无法从组合框中检索数据。
Posted
技术标签:
【中文标题】无法从组合框中检索数据。【英文标题】:Unable to retrieve data from combobox. 【发布时间】:2011-09-15 10:11:41 【问题描述】:我正在尝试显示 if 语句的结果,该语句基于在 windows 窗体组合框中选择的选项。 当 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;
【问题讨论】:
【参考方案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
【讨论】:
嘿,感谢您的评论,但是一旦我将值更改为 .SelectedText 我仍然总是返回错误值 您能调试一下看看SelectedText
中存储的内容吗?也许你的字符串不一样。
您实际上在哪里执行“frmSWChange1”表单的 ShowDialog()?在 frmSWChange 的构造函数中?以包含具有所选值的公共属性的方式设计“frmSWChange”表单会很好。这将有助于调试、重用表单和解耦 --> 让您的生活更轻松。
我在那里尝试了一些调试,结果发现没有值被传递到第二类。我尝试将组合框中选择的值分配给公共静态字符串,但是我遇到了同样的问题,即只显示错误。
你的静态字符串中存储了什么?【参考方案2】:
看看你方法中的这一行
frmSWChange frmSWChange1 = new frmSWChange();
您正在创建表单的一个新实例,这个实例与您所做的选择无关,这不会在组合框中选择任何文本。您需要的是对正在进行这些选择的表单的当前实例的引用。
【讨论】:
【参考方案3】: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
【讨论】:
您好,感谢您发布答案 :) 请注意,将空格缩进 all 行以确保代码形成一个块。但是,有时将其拆分是个好主意,但如果是这样,请进行一些解释。顶部应该总是有一些解释。如果您使用 lil' 解释对其进行编辑,它将获得一些支持;)以上是关于无法从组合框中检索数据。的主要内容,如果未能解决你的问题,请参考以下文章