我有一个带有一系列按钮的表单。按钮4必须从Excel加载一些数据,并将信息存储到一个名为dataMap 的字典中
private void button4_Click(object sender, EventArgs e)
{
loadXL myMap = new loadXL();
Dictionary<string, marketdata> dataMap = myMap.myDataLoader(Convert.ToDateTime(AsOfDate.Text),Convert.ToDouble(Underlying.Text));
}
此代码正确生成字典,我需要的所有数据都存储在dataMap中。现在的问题是,当我单击另一个按钮时,我需要能够访问字典中的信息。为了做到这一点,我尝试了以下方法:
public Dictionary<string, marketdata> button4_Click(object sender, EventArgs e)
{
loadXL myMap = new loadXL();
Dictionary<string, marketdata> dataMap = myMap.myDataLoader(Convert.ToDateTime(AsOfDate.Text),Convert.ToDouble(Underlying.Text));
return dataMap;
}
因此,点击按钮事件现在应该返回字典dataMap。如果我运行这个,我会得到以下错误:
"System.Collections.Generic.Dictionary Project2.myInputForm.button_Click(object,System.EventArgs)"具有错误的返回类型
它指的是表单设计器中的以下行:
this.button4.Click += new System.EventHandler(this.button4_Click);
我该如何处理?有没有一种快速的方法可以让点击按钮4时生成的字典可以被其他按钮点击访问?
谢谢。
Dictionary<string, marketdata> dataMap;
private void button4_Click(object sender, EventArgs e)
{
loadXL myMap = new loadXL();
dataMap = myMap.myDataLoader(Convert.ToDateTime(AsOfDate.Text),Convert.ToDouble(Underlying.Text));
}
private void function()
{
dataMap.//
}
在外部声明它,然后在任何时候使用它,只需确保在其实例化之前不要使用它
按钮点击事件不能返回任何内容,返回类型应为void
您应该在表单级别创建一个属性,并在按钮的点击事件中访问它
例如
Dictionary<string, marketdata> dataMap;
private void button4_Click(object sender, EventArgs e)
{
loadXL myMap = new loadXL();
dataMap = myMap.myDataLoader(Convert.ToDateTime(AsOfDate.Text),Convert.ToDouble(Underlying.Text));
}
private void anotherButton_Click(object sender, EventArgs e)
{
if (dataMap != null)
{
// here you can access dataMap
}
}
编辑
如果要从多个表单访问字典变量,则应创建另一个类,该类应包含可从多个位置访问的公共属性。
public class MyStaticProperties
{
public static Dictionary<string, marketdata> DataMap { get; set; };
}
// then you can access this in your button click events like htis
MyStaticProperties.DataMap