GtaVUsersInfo/Controls/CarItem.cs

87 lines
2.4 KiB
C#

using System;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Forms;
using GtaVUsersInfo.Helpers;
namespace GtaVUsersInfo.Controls
{
public partial class CarItem : UserControl
{
private static readonly HttpClient httpClient = new HttpClient();
public CarItem(Car carItem)
{
InitializeComponent();
NameLabel.Text = carItem.Name;
ClassLabel.Text = carItem.Class;
ModelLabel.Text = "Модель:" + carItem.Model;
ManufacturerLabel.Text = carItem.Manufacturer;
MoneyTextBox.Text = '$' + carItem.Price.ToString();
LoadImageAsync(carItem.Photo);
}
private async void LoadImageAsync(string imageUrl)
{
try
{
byte[] imageBytes = await httpClient.GetByteArrayAsync(imageUrl);
using (var ms = new MemoryStream(imageBytes))
{
var bitmap = new Bitmap(ms);
SetImage(bitmap);
}
}
catch (HttpRequestException ex)
{
ErrorsShow.ShowErrorMessage($"Ошибка HTTP: {ex.Message}");
}
catch (Exception ex)
{
ErrorsShow.ShowErrorMessage($"Произошла неожиданная ошибка: {ex.Message}");
}
}
private void SetImage(Image image)
{
if (InvokeRequired)
{
Invoke(new Action<Image>(SetImage), image);
}
else
{
PhotoBox.Image = image;
}
}
private void carPrice_Enter(object sender, EventArgs e)
{
(sender as TextBox).Text = (sender as TextBox).Text.Trim('$');
}
private void carPrice_Leave(object sender, EventArgs e)
{
(sender as TextBox).Text = '$' + (sender as TextBox).Text;
}
private void carPrice_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
NameLabel.Focus();
e.Handled = true;
return;
}
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
}
}