0

Variables.rows配列内の行数を定義するために呼び出される静的変数を使用する静的配列があります。Variables.rowsという別の静的クラスで定義されていVariablesます。

public static class TheArrayClass
{
    public static double[,] HiThere = new double[Variables.rows, 6];
}

私の問題は、プロジェクトが実行されるとすぐに静的配列が作成されることです(私は信じています)。これは、正しい値を割り当てるために必要なメソッドがVariables.Rows時間内に実行されないことを意味します。これは、配列のサイズが正しくないため、配列を作成するときにインデックス エラーが発生することを意味します。

コードのどこからでも配列にアクセスできるように、これを回避する方法が必要です。

4

3 に答える 3

2

フォーム間でメッセージの受け渡しを試してください。

public partial class Form1 : Form
{
    private string _data;

    public Form1()
    {
        InitializeComponent();
        _data = "Some data";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var form2 = new Form2();
        form2.Data = _data;
        form2.Show();
    }
}

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public string Data { get; set; }
}
于 2013-02-19T15:33:42.713 に答える
1

Variables.Rowsがどこで定義されたかを示していないのは興味深いことです。どちらの方法でも、クラスのコンストラクターで必要な初期化を実行できます。

public static class TheArrayClass
{
    public static double[,] HiThere;

    static TheArrayClass()
    {
         HiThere = new double[Variables.rows, 6];
    }
}
于 2013-02-19T15:25:47.713 に答える
0

設計上の問題があると思われるので、問題の解決に役立つ情報を追加しようと思います。

まず、静的クラスは、実際には、プロジェクトが実行されるとすぐに作成されます。ただし、静的クラスには、プロジェクトが実行されるとすぐに実行される静的コンストラクター (変数の行を定義できる場所) を含めることもできます。

また、おそらく ArrayList ( http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx ) または GenericList ( http://msdn.microsoft.com/en-us/ ) を使用する必要があります。 library/6sh2ey19.aspx )、これにより、配列変数の制限 (サイズの変更など) を簡単に回避できます。

于 2013-02-19T15:31:54.143 に答える