report.Preview(); 在打印预览这里报次错误,请高手指教。 [STAThread]     着个加过,不这里问题
        static void Main() 

解决方案 »

  1.   

    是否是对事件声明部分的内容作了修改,建议重新创建这个事件或者1,有加了[STAThread] 还是出错
    static void Main() 2,在主窗体中的Timer的事件中调用下面的代码然后报错
    frmdata.ShowDialog();--->提示"DragDrop 注册失败3,我的做法是:frmdata.ShowDialog(this);//this就是我的主窗体4,frmdata.ShowDialog(this)也会出现错误不过不是DragDrop 注册失败,而是跨线程操作窗体对象的错误。5,使用线程安全来调用frmdata.ShowDialog(this)。下面来看具体的代码:
    因为是Timer的事件中来调用frmdata.ShowDialog(this),所以会出现线程间的错误。
    这里再用线程安全的方法就可以解决了。
            #region 线程安全
            private delegate DialogResult FormDelegate(object msg, object form);
            public DialogResult ThreadSafeWay(object msg, object form)
            {
                FormDelegate controlDelegate = new FormDelegate(ThreadSafeWay);
                if ((this as Form).InvokeRequired)
                {
                    return (DialogResult)(this as Form).Invoke(controlDelegate,new object[]{ msg, form });
                }
                else
                {
                    return (form as Form).ShowDialog(this);
                }
            }
            #endregion
    现在把原来的代码:
    frmdata.ShowDialog();
    改成:ThreadSafeWay(null, frmdata);
    就可以了。