C#の配列の定数
BCCを使用していたのですが、最近VS2013でC#を勉強し始めました
フォームの指定した位置にいくつかのボタンを設置し、あらかじめ定義しておいた
テーブルからボタンのtextを表示したいと思い、以下のようにコーディングしたのですが
エラーが出てしまい思ったような結果に持って行くことができません
C#ならこうした方がいいという指摘も含めて どうやるのがいいのか
ご教授ください
足りない情報があれば追加します
ちなみにまだテスト段階だから2列定義して1列しか表示するようにしかなってません
-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace haneda
{
public partial class Form1 : Form
{
private Button[] buttons;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
int i;
//ボタンコントロール配列の作成
this.buttons = new Button[table.MAX_R];
for (i = 0; i < buttons.Length; i++)
{
//ボタンコントロールのインスタンス作成
this.buttons[i] = new Button();
//プロパティ設定
this.buttons[i].Name = "btn" + i.ToString();
this.buttons[i].Text = table.roomNo[1, i]; <=ここがエラー
this.buttons[i].Top = table.roomX01[i]; <=ここがエラー
this.buttons[i].Left = table.roomY01[i]; <=ここがエラー
this.buttons[i].Click += new System.EventHandler(button_Click);
//コントロールをフォームに追加
this.Controls.Add(this.buttons[i]);
}
}
private void button_Click(object sender, System.EventArgs e)
{
Button btn = (Button)sender;
MessageBox.Show(btn.Name);
}
}
public class define
{
public const bool IGNORE = false; //非表示
public const bool EFFECT = true; //表示
/* 最大値 */
public const int MAX_F = 2; //フロア数
public const int MAX_R = 3; //ルーム数
}
public class table
{
/* ナンバー */
public readonly string[,] roomNo = new string[define.MAX_F, define.MAX_R]
{
{ "101", "102", "103"},
{ "201", "202", "203"}
}
/* 表示・非表示 */
public readonly bool[,] effectRoom = new bool[define.MAX_F, define.MAX_R]
{
{EFFECT, IGNORE, EFFECT},
{EFFECT, EFFECT, EFFECT}
}
public readonly int[] roomX01 = new int[define.MAX_R]
{
5, 70, 135
}
public readonly int[] roomY01 = new int[define.MAX_R]
{
100, 100, 100
}
}
}
お礼
D-Matsu様 ありがとうござました。出来ました!