103 lines
2.9 KiB
C#
103 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace CarManagerV3
|
|
{
|
|
public partial class CarCard : UserControl
|
|
{
|
|
public Car Car;
|
|
|
|
public string CarName
|
|
{
|
|
get { return lblCarName.Text; }
|
|
set { lblCarName.Text = value; }
|
|
}
|
|
public string CarDetails
|
|
{
|
|
get { return lblCarDetails.Text; }
|
|
set { lblCarDetails.Text = value; }
|
|
}
|
|
|
|
public Image CarImage
|
|
{
|
|
get { return pbxCar.Image; }
|
|
set { pbxCar.Image = value; }
|
|
}
|
|
|
|
public CarCard()
|
|
{
|
|
InitializeComponent();
|
|
this.Cursor = Cursors.Hand;
|
|
|
|
foreach (Control ctrl in this.Controls)
|
|
{
|
|
ctrl.MouseClick += ForwardClick;
|
|
foreach (Control inner in ctrl.Controls)
|
|
{
|
|
inner.MouseClick += ForwardClick;
|
|
}
|
|
}
|
|
|
|
this.MouseClick += (s, e) => this.OnCardClicked(s, e);
|
|
}
|
|
|
|
public async void LoadImage()
|
|
{
|
|
this.CarImage = null; // Clear current image
|
|
this.CarImage = pbxCar.InitialImage; // Set to loading image
|
|
await Task.Run(() =>
|
|
{
|
|
Image img = ImageManager.GetImage(this.Car);
|
|
if (img != null)
|
|
{
|
|
this.CarImage = img;
|
|
}
|
|
else
|
|
{
|
|
this.CarImage = pbxCar.ErrorImage; // Set to error image if loading fails
|
|
}
|
|
});
|
|
}
|
|
|
|
private void ForwardClick(object sender, MouseEventArgs e)
|
|
{
|
|
// Raise your CardClicked event no matter what got clicked
|
|
if (e.Button == MouseButtons.Right) return;
|
|
|
|
Console.WriteLine($"Forwarding click from {sender.GetType().Name}");
|
|
CardClicked?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
|
|
public event EventHandler CardClicked;
|
|
private void OnCardClicked(object sender, MouseEventArgs e)
|
|
{
|
|
Console.WriteLine($"Card clicked at {e.Location} with button {e.Button}");
|
|
if (e.Button == MouseButtons.Right) return;
|
|
Console.WriteLine($"Card clicked: {this.CarName}");
|
|
|
|
if (this.CardClicked != null)
|
|
{
|
|
this.CardClicked(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
public void ClearCardClickedHandlers()
|
|
{
|
|
if (this.CardClicked != null)
|
|
{
|
|
foreach (Delegate d in this.CardClicked.GetInvocationList())
|
|
{
|
|
this.CardClicked -= (EventHandler)d;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|