У меня проблема с делегатами, которые ссылаются на null
, у меня есть это:
Сначала я определяю делегата, который будет действовать:
public delegate void MandarComponente(int Componente);
public event MandarComponente MandarComp;
Как я хочу, чтобы это было в операции перетаскивания, я собираюсь поместить некоторые важные вещи в код перетаскивания + падение
private void Capacitor_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) //This is a PictureBox Event
{
componente = 1;
Capacitor.DoDragDrop(Capacitor.Image, DragDropEffects.Copy | DragDropEffects.Move);
}
* 1009 будет использовать его в событии
public void tableLayoutPanel2_DragDrop(object sender, DragEventArgs e)
{
Point pl = new Point(this.Location.X + tableLayoutPanel2.Location.X + 10, this.Location.Y + tableLayoutPanel2.Location.Y + 32);
int R = (int)((e.Y - pl.Y) / pictureBox1.Height);
int C = (int)((e.X - pl.X) / pictureBox1.Width);
Console.WriteLine("X=" + e.X + "Y=" + e.Y + " [" + C + ", " + R + "]");
if (R == tableLayoutPanel2.RowCount) R--;
if (C == tableLayoutPanel2.ColumnCount) C--;
PictureBox pictureBox = (PictureBox)tableLayoutPanel2.GetControlFromPosition(C, R);
if (R == 0 && C == 0 || R == 2 && C == 0 || R == 2 && C == 2 || R == 0 && C == 2)
{
MessageBox.Show("¡No puedes poner un componente ahí!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
pictureBox = null;
}
if (componente == 1 && pictureBox != null)
{
pictureBox.Image = Capacitor.Image;
MandarComp(componente);
MandarComp = new MandarComponente(CambiarTexto);
if (R == 1 && C == 2 || R == 1 && C == 0)
{
pictureBox.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
}
}
Это относится к этому методу:
void CambiarTexto(int Componente)
{
if(Componente==1)
{
label5.Text = "Componente Seleccionado: CAPACITOR";
}
}
Но часть MandarCom(Componente)
всегда имеет исключение NullReferenceException
.
Edit: в основном то, что я пытаюсь сделать, это то, что делегат MandarComponente(int Componente)
сохраняет componente
и затем отправляет его методу CambiarTexto
, чтобы он выполнял действие в label5.Text
.