Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自动生成的方法。如何添加其他参数_C# - Fatal编程技术网

C#自动生成的方法。如何添加其他参数

C#自动生成的方法。如何添加其他参数,c#,C#,正在为本地企业开发收据打印机应用程序。从技术上讲,这是一个重写,我把它看作是一个完整的重构 原始代码如下所示: private void btn_print_Click(object sender, EventArgs e) { PrintDialog pd = new PrintDialog(); PrintDocument doc = new PrintDocument(); pd.Document = doc;

正在为本地企业开发收据打印机应用程序。从技术上讲,这是一个重写,我把它看作是一个完整的重构

原始代码如下所示:

private void btn_print_Click(object sender, EventArgs e)
        {

        PrintDialog pd = new PrintDialog();
        PrintDocument doc = new PrintDocument();
        pd.Document = doc;
        doc.PrintPage += new PrintPageEventHandler(pd_printpage);
        DialogResult res = pd.ShowDialog();
        if (res == DialogResult.OK)
        {
            doc.DefaultPageSettings.Landscape = false;
            doc.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("Env10", 4, 8);
            doc.Print();
        }

    }
    private void pd_printpage(object sender, PrintPageEventArgs e)
    {
        Graphics gfx = e.Graphics;
        SolidBrush blk = new SolidBrush(Color.Black);
        Font courier = new Font("Courier New", 12);
        Font lucidia = new Font("Lucida Sans", 12);
        Font lucidaplus = new Font("Lucida Sans", 18);
        StringFormat fmt = new StringFormat(StringFormatFlags.DirectionVertical);

        /*****  Create Object for Reciept  *****/
        Recpt rcpt = new Recpt();
        rcpt.Contrib = new ContInfo();
        rcpt.Pri = new Address();
        rcpt.Alt = new Address();

//--- Remainder of function omitted.
这是一个更好的版本,我目前正在工作

static class Printality
    {
        private static SolidBrush Blk = new SolidBrush(Color.Black);
        private static Font CourierBody = new Font("Courier New", 12);
        private static Font LucidaBody = new Font("Lucida Sans", 12);
        private static Font LucidaHeader = new Font("Lucida Sans", 18);
        private static StringFormat fmt;

        public static void PrintReciept(Receipt _rec)
        {
            PrintDialog pd = new PrintDialog();
            PrintDocument doc = new PrintDocument();
            doc.PrintPage += new PrintPageEventHandler(pd_printPage);
        }

        private static void pd_printPage(object sender, PrintPageEventArgs e)
        {
            Graphics gfx = e.Graphics;
            fmt = new StringFormat(StringFormatFlags.DirectionVertical);

        }
    }

最大的问题是:我正在将Receipt对象传递给函数
printReceipt()
我应该如何将它传递给
pd\u printPage()

如果我清楚地理解了您的问题,您希望将参数传递给事件

doc.PrintPage += (sender, e) => pd_printPage(sender, e, _rec);

private static void pd_printPage(object sender, PrintPageEventArgs e, Receipt rec)
{
    Graphics gfx = e.Graphics;
    fmt = new StringFormat(StringFormatFlags.DirectionVertical);

}

试试:静态类Printality:printcumentah!你完全明白了!我在JavaScript领域待得太久了。我没有意识到C#有那种功能!非常感谢。