Существует ли библиотечная функция удаления элемента из массива - C#
Формулировка задачи:
Существует ли библиотечная функция удаления элемента из массива в С#, подобно функции RemoveRange для списков?
В данном случае хочу удалить объект из массива pCar[i].
void Delete(object obj, EventArgs e)
{
pCar[i].RemoveRange(0, n);
Update();
Invalidate();
}Решение задачи: «Существует ли библиотечная функция удаления элемента из массива»
textual
Листинг программы
class Cars : Form
{
public ArrayList aL;
public int n, c; // кол-во машин
//Image PetrolSt;
public void HandlerEv() // Обработчик события ev
{
Console.WriteLine(" HandlerEv");
Invalidate();
}
public Cars()
{
//PetrolSt = Image.FromFile("image/petrol.jpg");
n = 2;
this.DoubleBuffered = true;
aL = new ArrayList(n);
for (int i = 0; i < aL.Capacity; i++)
{
if (i % 2 == 1)
{
Car c = new Car(i, "Машина", 165, 330, true);
c.ev += new delEv(HandlerEv);
aL.Add(c);
}
else
{
Car c = new Car(i, "Машина", 312, 96, false);
c.ev += new delEv(HandlerEv);
aL.Add(c);
}
}
Text = "Cars";
Start();
}
//-------------
public void Start() // Стартовать
{
for (int i = 0; i < aL.Count; i++)
{
(aL[i] as Car).Start();
}
}
public void Suspend() // Возобновить
{
for (int i = 0; i < aL.Count; i++)
{
(aL[i] as Car).Suspend();
}
}
//---------------
public void Resume() // Приостановить
{
for (int i = 0; i < aL.Count; i++)
{
(aL[i] as Car).Resume();
}
}
//--------------
/* void HandlerEv()
{
Invalidate();
}*/
protected override void OnPaint(PaintEventArgs e) //рисование
{
e.Graphics.DrawEllipse(new Pen(Color.Black, 40), 20, 20, 320, 320);
e.Graphics.DrawEllipse(new Pen(Color.Black, 40), 65, 65, 230, 230);
e.Graphics.FillRectangle(new SolidBrush(Color.Brown), 370, 100, 70, 170);
for (int i = 0; i < aL.Count; i++)
{
//рисование машины
e.Graphics.DrawRectangle(new Pen(Color.Red, 4), (aL[i] as Car).X, (aL[i] as Car).Y, 20, 20);
//e.Graphics.DrawRectangle(new Pen(Color.Green, 4), pCar[i].X, pCar[i].Y, 20, 20);
e.Graphics.DrawString((aL[i] as Car).N.ToString(), Font, new SolidBrush(Color.Blue), (aL[i] as Car).X + 4, (aL[i] as Car).Y + 4);
//e.Graphics.DrawRectangle(new Pen(Color.Blue, 4), pCar[i].X, pCar[i].Y, 20, 20);
}
}
protected override void OnClosed(EventArgs e) //закрытие
{
//for (int i = 0; i < aL.Count; i++)
// aL[i].Finish();
}
}
class User : Cars // Класс пользователя машин
{
private bool run;
public int i;
Form pChildForm, Interface;
Button pBut, pBut2, pBut3;
TextBox Text0;
private int rzm = 10;
public User()
{
run = true;
//---------------
pBut = new Button();
pBut.Location = new Point(32, 24);
pBut.Name = "pBut";
pBut.Size = new System.Drawing.Size(120, 30);
pBut.Text = "Suspend/Resume";
pBut.Click += new EventHandler(OnBut);
//---------------
pBut2 = new Button();
pBut2.Location = new Point(120, 24);
pBut2.Name = "pBut";
pBut2.Size = new System.Drawing.Size(120, 30);
pBut2.Text = "Delete";
pBut2.Click += new EventHandler(Delete);
//---------------
pBut3 = new Button();
pBut3.Location = new Point(210, 24);
pBut3.Name = "pBut";
pBut3.Size = new System.Drawing.Size(120, 30);
pBut3.Text = "Add a car";
pBut3.Click += new EventHandler(Add);
ClientSize = new System.Drawing.Size(200, 150);
//---------------
pChildForm = new Form();
pChildForm.Location = new Point(500, 500);
pChildForm.Size = new Size(800, 450);
pChildForm.Text = "User";
pChildForm.Show();
pChildForm.Controls.Add(pBut);
pChildForm.Controls.Add(pBut2);
pChildForm.Controls.Add(pBut3);
Text0 = new TextBox();
Text0.Location = new Point(200, 60);
Text0.Name = "T0";
Text0.Size = new System.Drawing.Size(80, 20);
pChildForm.ClientSize = new System.Drawing.Size(350, 100);
pChildForm.Controls.Add(Text0);
//-----------------Interface--------------
Interface = new Form(); // Создать дочернее окно (форму)
Interface.Location = new Point(700, 100);// и разместить его.
Interface.Size = new Size(600, 600); // Определить раз-мер
Interface.Text = "Interface"; // Задать заголовок дочернего окна
Interface.Show(); // Показать дочернее окно
Interface.ClientSize = new System.Drawing.Size(500, 250);
Interface.Paint += new PaintEventHandler(Interface_Paint);
}
//------------------------------
void Interface_Paint(object sender, PaintEventArgs e)
{
for (int i = 0; i < aL.Count; i++)
{
Car car = (Car)aL[i];
e.Graphics.DrawString("Машина №" + i,
new System.Drawing.Font("Arial", 10),
new SolidBrush(Color.Red),
new Point(rzm, 100));
Interface.Update();
if (run)
{
e.Graphics.DrawString("Машина запущена",
new System.Drawing.Font("Arial", 8),
new SolidBrush(Color.Red),
new Point(rzm, 60));
rzm = rzm + 130;
Interface.Update();
}
else
{
e.Graphics.DrawString("Машина остановлена",
new System.Drawing.Font("Arial", 8),
new SolidBrush(Color.Red),
new Point(rzm, 60));
rzm = rzm + 130;
Interface.Update();
}
}
}
private void HandlerE() // Обработать событие
{
rzm = 10;
Interface.Invalidate();
}
//---------------
void OnBut(object obj, EventArgs e) // Обработчик кнопки
{
Console.WriteLine("OkMouse");
if (run)
{
run = false;
Suspend();
}
else
if (!run)
{
run = true;
Resume();
}
}
//---------------
void Add(object obj, EventArgs e)
{
Random rand = new Random();
for (int i = 0; i < Convert.ToInt32(Text0.Text); i++)
{
if (rand.Next(10) % 2 == 1)
{
Car c = new Car(i, "Машина", 165, 330, true);
c.ev += new delEv(HandlerEv);
(aL[i] as Car).Start();
aL.Add(c);
}
else
{
Car c = new Car(i, "Машина", 312, 96, false);
c.ev += new delEv(HandlerEv);
(aL[i] as Car).Start();
aL.Add(c);
}
}
Update();
rzm = 10;
Interface.Invalidate();
//i++;
}
void Delete(object obj, EventArgs e)
{
for (int i = 0; i < Convert.ToInt32(Text0.Text); i++)
{
if (aL.Count != 0)
{
aL.RemoveAt(aL.Count - 1);
Update();
rzm = 10;
Interface.Invalidate();
//i--;
}
}
}
//---------------
static void Main() //самая главная функция
{
Cars aL = new Cars();
Application.Run(new User());
//for (int i = 0; i < aL.Count; i++) // Завершить потоки
//aL[i].Finish();
}
}
}