definiert Ich bin ziemlich neu in C# -Programmierung. Die folgenden Codes zeigen, wie man eine DataGridView Zeile mit TextBoxen in C# aktualisiert und es funktioniert perfekt, was ich denke, dass es nicht sollte.C# Verwendung der Variablen, die in der gleichen Klasse deklariert ist, aber in einer anderen Methode
int indexRow; // this is declared in Update_DataGridView_Using_TextBoxes class.
indexRow = e.RowIndex; // this is defined in dataGridView1_CellClick method.
In btnUpdate_Click Verfahren ist nur indexRow int, nicht e.RowIndex, die in anderen Verfahren definiert ist. Recht?
Dann sollte dieser Code nicht richtig funktionieren, da indexRow in btnUpdate_Click-Methode nichts anderes als int bedeutet.
Aber in Wirklichkeit spezifiziert es die genaue Reihe, die Benutzer auswählten.
Ich denke, dass indexRow irgendwie e.RowIndex drin gehalten hat.
Wie ist die Verwendung von Variablen, die in derselben Klasse deklariert sind, aber in anderen Methoden definiert sind? Oder fehlt mir ein Punkt?
Könnte jemand erklären, wie das funktioniert?
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 WindowsFormsApplication1
{
public partial class Update_DataGridView_Using_TextBoxes : Form
{
public Update_DataGridView_Using_TextBoxes()
{
InitializeComponent();
}
DataTable table = new DataTable();
int indexRow;
private void Update_DataGridView_Using_TextBoxes_Load(object sender, EventArgs e)
{
table.Columns.Add("Id", typeof(int));
table.Columns.Add("First Name", typeof(string));
table.Columns.Add("Last Name", typeof(string));
table.Columns.Add("Age", typeof(int));
table.Rows.Add(1, "First A", "Last A", 10);
table.Rows.Add(2, "First B", "Last B", 20);
table.Rows.Add(3, "First C", "Last C", 30);
table.Rows.Add(4, "First D", "Last D", 40);
table.Rows.Add(5, "First E", "Last E", 50);
table.Rows.Add(6, "First F", "Last F", 60);
table.Rows.Add(7, "First G", "Last G", 70);
table.Rows.Add(8, "First H", "Last H", 80);
dataGridView1.DataSource = table;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
indexRow = e.RowIndex;
DataGridViewRow row = dataGridView1.Rows[indexRow];
textBoxID.Text = row.Cells[0].Value.ToString();
textBoxFN.Text = row.Cells[1].Value.ToString();
textBoxLN.Text = row.Cells[2].Value.ToString();
textBoxAGE.Text = row.Cells[3].Value.ToString();
}
private void btnUpdate_Click(object sender, EventArgs e)
{
DataGridViewRow newDataRow = dataGridView1.Rows[indexRow];
newDataRow.Cells[0].Value = textBoxID.Text;
newDataRow.Cells[1].Value = textBoxFN.Text;
newDataRow.Cells[2].Value = textBoxLN.Text;
newDataRow.Cells[3].Value = textBoxAGE.Text;
}
}
}
Sie haben Recht 'e.RowIndex' Wert wird in dem Feld der Klasse gespeichert, die' indexRow' ist –
Ich verstehe Ihre Frage nicht. Der 'indexRow'-Bereich ist die gesamte Klasse und wird daher jedes Mal aktualisiert, wenn auf eine Zelle geklickt und in der Aktualisierungsmethode – Pikoh
gelesen wird. Lesen Sie im Variablenbereich nach. Stack Overflow Q & A-Format ist nicht der richtige Ort für offene Fragen wie diese. Abstimmung zum Schließen. –