打印并导出到USB(文件格式:XML / CSV / Excel)智能设备[Symbo Motoroal MC75(Windows Mobile 6.1)]应用程序中的功能?

时间:2011-10-19 07:06:27

标签: c# windows-mobile symbols windows-mobile-6 smart-device

我有一个包含组合框,文本框和包含许多行的数据网格的表单。我想打印出来(生成条形码[应用程序生成条形码作为图像]),并且还希望将该页面中的数据以CSV / XML / Excel格式导出到USB或手机的物理目录。请指导我怎么做。这是我的第一个Windows Mobile应用程序。我在Windows Mobile中并不那么聪明。请帮我找一个更好的解决方案作为代码或链接,或者直接指导我。

1 个答案:

答案 0 :(得分:0)

要创建“打印输出”,您必须使用GDI写入PrintDocument。没有真正内置的东西。你可以做截图(下面的代码)。

将数据导出为CSV最好也可以自行完成。只需创建/打开文件流并写下您想要的任何内容。

屏幕截图:需要PInvoke到BitBlt和GetDC

const int SRCCOPY = 0x00CC0020;

[DllImport("coredll.dll")]
private static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);

[DllImport("coredll.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);

public Bitmap ScreenCapture(string fileName) {
  Bitmap bitmap = new Bitmap(this.Width, this.Height);
  using (Graphics gScr = Graphics.FromHdc(GetDC(IntPtr.Zero))) { // A Zero Pointer will Get the screen context
    using (Graphics gBmp = Graphics.FromImage(bitmap)) { // Get the bitmap graphics
      BitBlt(gBmp.GetHdc(), 0, 0, this.Width, this.Height, gScr.GetHdc(), this.Left, this.Top, SRCCOPY); // Blit the image data
    }
  }
  bitmap.Save(fileName, ImageFormat.Png); //Saves the image
  return bitmap;
}

<强> [更新]:

  • 如果您希望将图像保存到特定位置,请使用文件名发送完整路径(即\\Windows\Temp\screenShot.png)。

  • 如果您要排除控件,请缩小this.Widththis.Heightthis.Leftthis.Right,直到您的大小适合有效的区域

  • 最后,如果您希望Bitmap在内存中使用,只需保存并根据需要使用它。例如:

    panel1.Image = ScreenCapture(“image.png”); panel1.BringToFront();

希望有所帮助。