Cái tag này là quote chứ đâu phải code, đọc không nổi bạn ơi
Gợi ý nên thay array bằng List<T> với T là 1 instance của class Job:
Dưới đây là code một chương trình đơn giản của mình. Mình muốn tạo một array 2 chiều để lưu thông tin về job và các giá trị liên quan đến nó. Mình gặp vấn đề là không biết cách khai báo cái arrayTable trong class như thế nào. Ban đầu mình tạo array rỗng như trong quote, sau khi sử dụng button 1 và 2 để gán giá trị cho nó thì khi show cái table ra bằng button 3 thì báo lỗi như trong hình. Do đó mình nghĩ là ở event của button 3, chương trình vẫn gọi cái arrayTable ra chứ ko phải cái arrayTable mình đã sử dụng ở button 2.
Mong mọi người chỉ dẫn cách xử lý lỗi nhỏ này T___T. Cám ơn nhiều.
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
static int arrayRow;
static int[,] arrayTable = new int[,] {};
static int numfactor = 4; // numfactor = job, processing time, duel time, weight
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string numjob = numJob.Text;
arrayRow = Int32.Parse(numjob);
jobID.Text = "1";
numJob.Enabled = false;
}
private void button2_Click(object sender, EventArgs e)
{
int[,] arrayTable = new int[arrayRow + 1, numfactor];
int _jobID = Int32.Parse(jobID.Text);
arrayTable[_jobID, 0] = Int32.Parse(jobID.Text);
arrayTable[_jobID, 1] = Int32.Parse(pID.Text);
arrayTable[_jobID, 2] = Int32.Parse(dID.Text);
arrayTable[_jobID, 3] = Int32.Parse(wID.Text);
_jobID++;
if (_jobID > arrayRow)
{
button2.Enabled = false;
MessageBox.Show("You've already initialized the data table!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
jobID.Text = Convert.ToString(_jobID);
}
private void button3_Click(object sender, EventArgs e)
{
string output = " ";
output += "Jobs\tProcessing Time\tDuel Time\tWeight";
for (int i = 1; i <= arrayRow; i++)
output += arrayTable[i, 0] + "\t" + arrayTable[i, 1] + "\t" + arrayTable[i, 2] + "\t" + arrayTable[i, 3] + "\n"; <-- Báo lỗi "Index was outside the bounds of the array."
MessageBox.Show(output, "Data Table", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
Cái tag này là quote chứ đâu phải code, đọc không nổi bạn ơi
Gợi ý nên thay array bằng List<T> với T là 1 instance của class Job:
Lúc nào cũng lãng đãng như người trên mây
Những người mới : Hãy tìm hiểu luật lệ diễn đàn trước khi post bài !
quá chuẩnDo đó mình nghĩ là ở event của button 3, chương trình vẫn gọi cái arrayTable ra chứ ko phải cái arrayTable mình đã sử dụng ở button 2.
thiết nghĩ nên khởi tạo arrayTable ở button1 chứ ko phải button2Visual C# Code:
{ _jobID++; ...................... }
Visual C# Code:
Visual C# Code:
{ //int[,] arrayTable = new int[arrayRow + 1, numfactor]; _jobID++; { MessageBox.Show("You've already initialized the data table!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information); } jobID.Text = Convert.ToString(_jobID); }
Mình hiểu rồi và đã giải quyết đc. Cám ơn mọi người nhiều ^^