У меня есть mdichild и обработчик событий для перетаскивания, поэтому, когда я перетаскиваю файл изображения в моей форме, с этим изображением создается picturebox (name = dpic).
У меня есть другой обработчик событий, предназначенный для dpic_Click, поэтому, когда я нажимаю на изображение, текст моей формы является именем этого изображения.
После того, как я впервые уронил изображение, создается еще один dpic, потому что у вас не может быть двух котролов с одинаковым именем. C # автоматически меняет имя, и это заставляет мои обработчики событий работать только для последнего изображения, которое я вставил. Я думаю, что если бы я мог сделать обработчик событий для моего mdichild, который получает имя элемента управления, который находится под указателем мыши, я мог бы просто изменить назад изображение, на которое я указываю.
UPDATE
Вот мой код, я сделал обработчик событий для добавления моего mdichild:
void mdiChild_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
dpic = new PictureBox() ;
string[] filepath = (string[])e.Data.GetData(DataFormats.FileDrop);
Image image = Image.FromFile(filepath[0]);
dpic.Image = image;
dpic.Tag = Path.GetFileName(filepath[0]);
this.ActiveMdiChild.Controls.Add(dpic);
dpic.ContextMenuStrip = this.contextMenuStrip1;
this.ActiveMdiChild.Refresh();
dpic.BringToFront();
this.ActiveMdiChild.ActiveControl = dpic;
dpic.Click += new EventHandler(dpic_Click);
// _____this helped me do it_________________________________________________
foreach (Control c in this.ActiveMdiChild.Controls)
{
c.Click += new EventHandler(c_Click);
}
// ________________________________________________________________________
}
}