例如:如果";ABC";则在一个文件中;值和指定颜色ABC红";写入行。
我遇到这个问题是因为我不知道如何从组合框中检索值,以便在GetHeader类中使用。
EXTRA:我正在寻找两种解决方案之一,
(1( 我浏览并进行字符串比较,如";retrieveValueFromBox;或
(2( 以某种方式获取所选项目的索引,并使用该索引来编写我需要的行"如果能得到一些关于如何更好地使用C#或学习C#的好建议,那也太好了。
我的代码:
主窗口.xaml
<ComboBox x:Name="myBox" ...alignment information...>
<ComboBoxItem Content="abc" ...alignment information...>
<ComboBoxItem Content="def" ...alignment information...>
<ComboBoxItem Content="ghi" ...alignment information...>
<ComboBoxItem Content="jkl" ...alignment information...>
</ComboBox>
主窗口.xaml.cs
private void selectedItemFromBox(object sender, EventArgs e)
{
ComboBox selectedValue = (ComboBox)sender;
string selectedText = selectedValue.Text;
OutputFile output = new OutputFile();
output.retreiveValueFromBox(selectedText);
}
输出文件.cs
namespace myApplication
{
class OutputFile
{
// Stuff
}
//public bool Write( ...args... ) makes the call to this function. See below
private void GetHeader(StreamWriter w, string year, string evt)
{
//How do I get the value from the combobox here so I can use it.
// If it is better practice to grab the value in public bool Write() then see below
// Yes I understand that GetHEader's args will need to be changed
w.WriteLine("Line 1");
w.WriteLine("Line 2");
w.WriteLine("Value and Assigned Color " + retreiveValueFromBox(comboBoxItem));
w.WriteLine("Line N");
}
private string retreiveValueFromBox(string boxText)
{
string value_Color = "";
//If I can just get the index of the string, I can just do a case/switch.
//And dump the String.Euals()
if (String.Equals(boxText, "abc"))
{
value_Color = boxText + " red");
}
else if bString.Equals(boxText, "def")
{
value_Color = boxText + " blue");
}
else if String.Equals(boxText, "ghi")
{
value_Color = boxText + " green");
}
else if String.Equals(boxText, "jkl")
{
value_Color = boxText + " orange");
}
else
{
value_Color = "UNKNOWN yellow");
}
return value_Color;
}
public bool Write( ...args... )
{
//Stuff
for (; idx < eventNum; )
{
// Or Get the ComboBox Value here
GetHeader(sWrite, year(), evt); //And pass value in here.
}
}
我得到了我需要的东西。
我这边的问题。
组合框未正确绑定到事件。修复方法是双击XAML设计窗口中的组合框,它在WindowWindow.XAML.cs的最底部创建了一个绑定到该框的事件。
private void myComboBoxName_SelectionChanged(Object sender, SelectionChangedEventArgs e)
{
comboxValue = myComboBoxName.SelectedIndex.ToString();
}
我注意到,我以前没有注意到,还有另一个函数处理GUI中的信息(文件I/O信息(。所以我把变量";组合框值";进入该函数,并不断传递它,直到它把我一直带到Outputfile.cs.
因为我只使用索引(0,1,2,3,4(。我只是用了一个大小写开关来打印出值和指定的颜色。