ユーザーがボタンを押すと、画像が9つのピクチャボックスの1つに配置されるプログラムのセクションを作成しようとしています。ボタンをクリックするたびに、異なるピクチャボックスが選択されます。ただし、それに到達する前に、メソッドに渡そうとしている配列を表示するのに問題があります。
Slots と SlotsUsed の 2 つの配列があり、プログラムの開始時にそれらを初期化しようとしています。ただし、「Button1」内で呼び出されるメソッド「randomBox」にそれらを渡そうとすると、ビジュアルスタジオはそれらが存在しないと言います。コード全体でこれらの配列を表示するにはどうすればよいですか?
どうもありがとうアンソニー
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 pin_program
{
public partial class Mainscreen : Form
{
//Sets where users files are to be stored (for later use)
string activeDir = @"C:\Users\Tony\Downloads\Programs\pin program\Users";
public Mainscreen()
{
InitializeComponent();
}
//method to generate random number
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
public void randomBox(int pictureVal, PictureBox[] Slots, bool[] SlotsUsed)
{
//generate random number
int j = RandomNumber(0, 9);
if (SlotsUsed[j] == false)
{
// Create image, assign it and set slots value to used
Image newImage = Image.FromFile(@"C:\Users\Tony\Downloads\Programs\pin program\pin program\pin program\Images\" + pictureVal + ".jpg");
Slots[j].Image = newImage;
SlotsUsed[j] = true;
}
else
do
{
j = RandomNumber(0, 9);
} while (SlotsUsed[j] == false);
return;
}
private void button1_Click(object sender, EventArgs e)
{
//for use later
string userName = textBox1.Text;
//for use later
label1.Visible = true;
//test call of method.
randomBox(1, Slots, SlotsUsed);
}
public void Mainscreen_Load(object sender, EventArgs e)
{
//array for slots
PictureBox[] Slots = new PictureBox[9];
Slots[0] = pictureBox1;
Slots[1] = pictureBox2;
Slots[2] = pictureBox3;
Slots[3] = pictureBox4;
Slots[4] = pictureBox5;
Slots[5] = pictureBox6;
Slots[6] = pictureBox7;
Slots[7] = pictureBox8;
Slots[8] = pictureBox9;
//array for used slots
bool[] SlotsUsed = new bool[9];
for (int i = 0; i != (SlotsUsed.Length); i++)
{
SlotsUsed[i] = false;
}
}
}
}
編集:何らかの理由でコメントを投稿できないようですので、ここで質問します。配列をローカルではなくインスタンス変数として宣言するにはどうすればよいですか? インスタンス変数には、私が知っているかもしれない別の名前がありますか?
乾杯