Проблема в том, что «имя« dataGridView2 »не существует в этом контексте». Он появляется только в последних частях кода. Размещение объекта за пределами publi c void menuItem1_Click устраняет проблему, но затем создает только один объект, мне нужно создавать объект каждый раз, когда нажимается кнопка.
Вот код из Form1 :
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 Kalkulator_Matrica
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int brojMatrice = 1;
public int dataGridCreator = 0;
public void menuItem1_Click(object sender, EventArgs e)
{
// opens form2 with new matrix
Form2 novaMatrica = new Form2();
using (var form = new Form2())
{
var result = form.ShowDialog();
if (result == DialogResult.OK)
{
int column = form.ReturnValue1;
int row = form.ReturnValue2;
//Create tab
TabPage tpage = new TabPage("Matrica " + brojMatrice);
tabControl1.TabPages.Add(tpage);
//Create data grid
DataGridView dataGridView2 = new DataGridView();
dataGridView2.ClientSize = new Size(553, 350);
dataGridView2.AllowUserToAddRows = false;
dataGridView2.AllowUserToResizeColumns = false;
dataGridView2.AllowUserToResizeRows = false;
dataGridView2.ColumnHeadersVisible = false;
dataGridView2.RowHeadersVisible = false;
dataGridView2.ColumnCount = column;
dataGridView2.RowCount = row;
this.AutoSize = true;
tpage.Controls.Add(dataGridView2); //Add grid to tab
//Create matrix name label
Label imeMatrice = new Label();
imeMatrice.Location = new Point(620, 10);
imeMatrice.Size = new Size(100, 20);
imeMatrice.Font = new Font("Microsoft Sans Serif", 15);
imeMatrice.Text = "Matrica " + brojMatrice;
tpage.Controls.Add(imeMatrice);
//Create matrix data label
Label dataMatrice = new Label();
dataMatrice.Location = new Point(637, 35);
dataMatrice.Size = new Size(100, 20);
dataMatrice.Font = new Font("Microsoft Sans Serif", 15);
dataMatrice.Text = dataGridView2.RowCount + " x " + dataGridView2.ColumnCount;
tpage.Controls.Add(dataMatrice);
//Povecamo counter za imena matrica
brojMatrice += 1;
//Create button ADD ROW
Button addRow = new Button();
addRow.Location = new Point(557, 70);
addRow.Size = new Size(107, 40);
addRow.Text = "Dodaj redak";
addRow.Click += new EventHandler(addRowClick);
tpage.Controls.Add(addRow);
//Create button REMOVE ROW
Button removeRow = new Button();
removeRow.Location = new Point(663, 70);
removeRow.Size = new Size(107, 40);
removeRow.Text = "Izbrisi redak";
removeRow.Click += new EventHandler(removeRowClick);
tpage.Controls.Add(removeRow);
//Create button ADD COLUMN
Button addColumn = new Button();
addColumn.Location = new Point(557, 110);
addColumn.Size = new Size(107, 40);
addColumn.Text = "Dodaj stupac";
addColumn.Click += new EventHandler(addColumnClick);
tpage.Controls.Add(addColumn);
//Create button REMOVE COLUMN
Button removeColumn = new Button();
removeColumn.Location = new Point(663, 110);
removeColumn.Size = new Size(107, 40);
removeColumn.Text = "Izbrisi stupac";
removeColumn.Click += new EventHandler(removeColumnClick);
tpage.Controls.Add(removeColumn);
//Sets widght of all columns
for (int i = 0; i < column; i = i + 1)
{
dataGridView2.Columns[i].Width = 25;
}
dataGridCreator = dataGridCreator + 1;
}
}
}
private void addRowClick(object sender, EventArgs e)
{
dataGridView2.RowCount = dataGridView2.RowCount + 1;
}
private void removeRowClick(object sender, EventArgs e)
{
if (dataGridView2.RowCount > 1) {
dataGridView2.RowCount = dataGridView2.RowCount - 1;
}
}
private void addColumnClick(object sender, EventArgs e)
{
dataGridView2.ColumnCount = dataGridView2.ColumnCount + 1;
for (int i = 0; i < dataGridView2.ColumnCount; i = i + 1)
{
dataGridView2.Columns[i].Width = 25;
}
}
private void removeColumnClick(object sender, EventArgs e)
{
if (dataGridView2.ColumnCount > 1)
{
dataGridView2.ColumnCount = dataGridView2.ColumnCount - 1;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}