Код: Выделить всё
// I call the method like this,in the load event of the xtraform
Printer prtr = new Printer();
prtr.ConnectPrinter(etiket_mak_ip, Convert.ToInt32(PortControl), lstLogAlt100, printer_name);
// Code from another class
private TcpClient clt = null;
private NetworkStream ns = null;
private StreamReader sr = null;
public bool ConnectPrinter(string Ip, int Tcp, ListView lst, string printer)
{
clt = null;
ns = null;
sr = null;
try
{
if (!IsExistsHost(Ip, lst, printer))
{
throw new Exception("Printer Error(ConnectPrinter)");
}
clt = new TcpClient(Ip, Tcp);
ns = clt.GetStream();
sr = new StreamReader(ns);
connectionStatus = true;
return true;
}
Код: Выделить всё
public void GetBarcode200(DataRow row)
{
Label200 lbl200 = new Label200();
lbl200.Rollid = row["Rollid"].ToString();
lbl200.Meter= row["Meter"].ToString();
ShipmentLabel.Sample200 report = new ShipmentLabel.Sample200(lbl200);
DevExpress.XtraReports.UI.ReportPrintTool printTool = new DevExpress.XtraReports.UI.ReportPrintTool(report);
printTool.Print("SampleSato");
}
Проблема в том, что этот метод «Печать» печатает штрих-код ТОЛЬКО после того, как я закрываю xtraform, который является дочерним элементом FluentDesignForm. В событии закрытия формы я удаляю объекты, которые помогают мне подключиться к принтеру, например:
Код: Выделить всё
private void frmConveyorBase100_FormClosing(object sender, FormClosingEventArgs e)
{
if (prtr != null)
{
prtr.DisconnectPrinter();
prtr = null;
}
Код: Выделить всё
//Code from another class
public void DisconnectPrinter()
{
try
{
if (sr != null)
{
sr.Close();
sr.Dispose();
sr = null;
}
if (ns != null)
{
ns.Close();
ns.Dispose();
ns = null;
}
if (clt != null)
{
clt.Close();
clt.Dispose();
clt = null;
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... xtrareport
Мобильная версия