所以我这里是我的代码:我有2个表格, - form1中的abutton带你进入form2。 -form2中包含Datagridview - 在表单1中输入信息(名称,年龄),然后在form2中的datagridview中加载它们 - 当我选择一行删除fom datagrid视图时,我希望从数组中删除该行。(我该怎么做) 提前谢谢你
class Class1
{
public struct client
{
public string nom;
public string prenom;
public int age;
}
public static client[] TC = new client[100];
public static int i = 0;
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
private void btn_ajouter_Click(object sender, EventArgs e)
{
Class1.TC[Class1.i].nom = textBox_nom.Text;
Class1.TC[Class1.i].prenom = textBox_prenom.Text;
Class1.TC[Class1.i].age = int.Parse(textBox_age.Text);
textBox_age.Clear();
textBox_nom.Clear();
textBox_prenom.Clear();
Class1.i = Class1.i + 1;
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btn_afficher_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
for (int j = 0; j <= Class1.i-1; j++)
{
dataGridView1.Rows.Add(Class1.TC[j].nom,Class1.TC[j].prenom,Class1.TC[j].age);
}
}
private void btn_supprimer_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
}
}
答案 0 :(得分:2)
这是从数组中删除项目的扩展方法:
public static T[] RemoveAt<T> (this T[] arr, int index) {
return arr.Where ((e, i) => i != index).ToArray ();
}
由于数组在C#中是不可变的,因此实际上无法从数组中删除元素。
extension方法返回一个新数组,其中删除了指定的元素,因此您应该像这样调用它:myarr = myarr.RemoveAt (index);
答案 1 :(得分:2)
你无法从数组中“删除”,数组的大小是固定的。您创建一个包含100个客户端的数组,总是有100个客户端,您应该使用List而是使用其上的添加/删除方法来更改它的元素。
答案 2 :(得分:-1)
您可以改为创建与此类数组相同的新列表
var yourList = yourArray.ToList();
yourList.Remove(someValue)
// to remove a specific value from your array
yourList.RemoveAt(someIndex)
// to remove value from specific index.