2016-01-11 4 views
-3

, так что я вот мой код: У меня есть 2 формы, - abutton в form1 принимает вас к form2. -form2 имеет Datagridview в нем - вы вводите информацию (имя, возраст) в форме 1, а затем загружаете их в datagridview в form2 -когда я выбрал строку для удаления fat datagrid view Я хочу, чтобы эта строка была удалена . тоже из массива (как я могу это сделать) большое спасибо заранееКак удалить элемент из массива в C#

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); 
    } 
} 
+1

Что ваш вопрос? Где именно вы застряли? Как вы попытались удалить элемент из массива? (Предлагаемый дублированный вопрос имеет некоторые хорошие решения для этого.) – David

ответ

2

Вот метод расширения для удаления элемента из массива:

public static T[] RemoveAt<T> (this T[] arr, int index) { 
    return arr.Where ((e, i) => i != index).ToArray(); 
} 

Поскольку массивы являются неизменяемыми в C#, вы фактически не может удалить элемент из массива. Метод расширения возвращает новый массив, в котором указанный элемент удален, поэтому вы должны называть его следующим: myarr = myarr.RemoveAt (index);

+1

Это не «удаляет» что-либо из массива, он создает второй массив без этого элемента, поэтому каждый раз, когда вы получите новый массив. –

+0

где поставить этот код? потому что у меня есть кнопка удаления aa, которая удаляет строки из datagridview –

+0

@CharafB .: Этот код будет использоваться в статическом классе для методов расширения: https://msdn.microsoft.com/en-us/library/bb383977.aspx – David

2

Вы не можете «удалить» из массива, размер массива фиксирован. Вы создаете массив из 100 клиентов, всегда будет 100 клиентов, вы должны использовать список вместо него и использовать методы добавления/удаления на нем, чтобы изменить его элементы.

+0

хорошо, но бы вы написали код для меня, пожалуйста, Я показал, что я сделал выше –

+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. 
+0

И как это изменит массив? – David

+0

Это не удаляет из массива вообще, он создает новый список и удаляет из этого нового списка, массив полностью не затрагивается, и поскольку вы никогда не храните сам список, ни это ничего, это в основном функциональная операция за исключением того, что он выделяет память. –

+0

хорошо; и после удаления из списка; который не удаляет fom массив, мне нужен новый массив, который не содержит этот элемент, который я удалил. –

Смежные вопросы