我有一个包含组合框,文本框和包含许多行的数据网格的表单。我想打印出来(生成条形码[应用程序生成条形码作为图像]),并且还希望将该页面中的数据以CSV / XML / Excel格式导出到USB或手机的物理目录。请指导我怎么做。这是我的第一个Windows Mobile应用程序。我在Windows Mobile中并不那么聪明。请帮我找一个更好的解决方案作为代码或链接,或者直接指导我。
答案 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.Width
,this.Height
,this.Left
和this.Right
,直到您的大小适合有效的区域
最后,如果您希望Bitmap
在内存中使用,只需保存并根据需要使用它。例如:
panel1.Image = ScreenCapture(“image.png”); panel1.BringToFront();
希望有所帮助。