reportViewer1.PrintDialog()的关闭 触发打印对话框的打印按钮

mac2022-06-30  103

        public void button1_Click(object sender, EventArgs e)        {            Pg();           

        }        public void Pg()        {            Closed clos = new Closed();            System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(clos.ClosePrintDialog));            th.Start();            reportViewer1.PrintDialog();            th.Abort();            clos.Dispose();                       

        }

 

//closed 窗口的代码

using System.Runtime.InteropServices;

namespace printcode{    public partial class Closed : Form    {        [DllImport("User32.dll", EntryPoint = "FindWindow")]        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("User32.dll", EntryPoint = "SendMessage")]        private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

        const int WM_GETTEXT = 0x000D;        const int WM_SETTEXT = 0x000C;        const int WM_CLICK = 0x00F5;

        public Closed()        {            InitializeComponent();        }

        private void Closed_Load(object sender, EventArgs e)        {            //this.Hide();                   }        public void ClosePrintDialog()        {            while (true)            {                //下面的这些参数都可以用Spy++查到                 string lpszParentClass = "#32770"; //整个窗口的类名                 string lpszParentWindow = "打印"; //窗口标题                 string lpszClass_Print = "Button"; //需要查找的Button的类名                 string lpszName_Print = "打印(&P)"; //需要查找的Button的标题

                IntPtr ParenthWnd = new IntPtr(0);                IntPtr ButtonhWnd = new IntPtr(0);

                //查到窗体,得到整个窗体                 ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);

                //判断这个窗体是否有效                 if (!ParenthWnd.Equals(IntPtr.Zero))                {                    //得到Button这个子窗体,并触发它的Click事件                     ButtonhWnd = FindWindowEx(ParenthWnd, ButtonhWnd, lpszClass_Print, lpszName_Print);                    if (!ButtonhWnd.Equals(IntPtr.Zero))                    {                        SendMessage(ButtonhWnd, WM_CLICK, (IntPtr)0, "0");

                    }                }                System.Threading.Thread.Sleep(30);            }                   }

    }}

转载于:https://www.cnblogs.com/MZB-/archive/2012/02/10/2345485.html

相关资源:Microsoft.ReportViewer 10.0.30319.1
最新回复(0)