Я знаю, что эта ошибка вызвана тем, что какая-то другая программа той же программы использует этот процесс или, по крайней мере, я так думаю.
Вот кнопка, вызывающая эту ошибку
Код: Выделить всё
private void createbtn_Click(object sender, EventArgs e)
{
InsertBarCodeImage();
}
private void InsertBarCodeImage()
{
try
{
if (qtytxt.Text != String.Empty)
{
Picturebox1.Image = null;
BarCode insertBarCode = new BarCode();
insertBarCode.InsertBarCode(qtytxt.Text, Picturebox1.Image);
Picturebox1.Image = new Bitmap(insertBarCode.BARCODEQUANTITYNAMERUTE);
Picturebox1.SizeMode = PictureBoxSizeMode.StretchImage;
MessageBox.Show("Label created");
}
else
{
MessageBox.Show("Please enter qty", "Verify", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
Код: Выделить всё
class BarCode
{
public string BARCODEQUANTITYNAMERUTE { get; set; }
public void InsertBarCode(string quantity, Image quantityImage)
{
BARCODEQUANTITYNAMERUTE = @"I:\User\Image\BarCodes\QTY.png";
try
{
Bitmap quantityBarCode = CreateBarCode("*" + quantity + "*");
if (System.IO.File.Exists(BARCODEQUANTITYNAMERUTE))
System.IO.File.Delete(BARCODEQUANTITYNAMERUTE);
quantityBarCode.Save(BARCODEQUANTITYNAMERUTE, System.Drawing.Imaging.ImageFormat.Png);
quantityImage = new Bitmap(BARCODEQUANTITYNAMERUTE);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
private Bitmap CreateBarCode(string text)
{
Bitmap barcode = new Bitmap(1, 1);
const string freeThreeOfNine = "Free 3 of 9";
Font fontthreeofnine = new Font(freeThreeOfNine, 40, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
Graphics graphics = Graphics.FromImage(barcode);
SizeF datasize = graphics.MeasureString(text, fontthreeofnine);
barcode = new Bitmap(barcode, datasize.ToSize());
graphics = Graphics.FromImage(barcode);
graphics.Clear(Color.White);
graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
graphics.DrawString(text, fontthreeofnine, new SolidBrush(Color.Black), 0, 0);
graphics.Flush();
fontthreeofnine.Dispose();
graphics.Dispose();
return barcode;
}
}
Код: Выделить всё
if (System.IO.File.Exists(BARCODEQUANTITYNAMERUTE))
System.IO.File.Delete(BARCODEQUANTITYNAMERUTE);
Я использую
Код: Выделить всё
PictureBox1.Image = null;
Буду признателен за любую помощь.
Кроме того, если бы вы были достаточно любезны и указали на какие-либо передовые методы в комментариях, это помогло бы мне.
Редактировать (Помощь от @) HansPassant) изменил InsertBardCode в классе
Код: Выделить всё
public Image InsertBarCode(string barCodeString)
{
Bitmap barCodeImage = CreateBarCode("*" + barCodeString + "*");
return barCodeImage;
}
Подробнее здесь: https://stackoverflow.com/questions/335 ... picturebox
Мобильная версия