在C#窗体中共享词典



我有一个带有一系列按钮的表单。按钮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

相关内容

  • 没有找到相关文章

最新更新