2012-07-13 58 views
1

我使用C#4.0和MsCharts的Visual Studio 2010中当我执行有没有办法改变MsChart中PrintPreview对话框的图标?

MyPlotChart.Printing.PrintPreview(); 

(见http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.printingmanager.printpreview)它按预期工作,但打印预览对话框显示默认的图标。请问有没有办法使用我自己的图标?就像我会用PrintPreviewDialog.Icon(请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.printpreviewdialog.icon.aspx

谢谢。

+1

MSChart的使用打印Priview的原生版本和不提供对图标的访问。如果你想使用内置的打印预览功能,你就会陷入困境......如果你真的想要有不同的图标,你必须实现自己的打印预览功能。 – 2012-07-13 16:06:13

回答

1

最后我写了一个黑客。我在调用PrintPreview()之前添加了一个forms.timer。然后我在Application.OpenForms中找到表单并设置图标。

private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (PrintPreviewIcon != null) 
     { 
      PrintPreviewTimer.Enabled = true; 
     } 

     PlotChart.Printing.PrintPreview(); 
    } 

    private void PrintPreviewTimer_Tick(object sender, EventArgs e) 
    { 
     foreach (Form f in Application.OpenForms) 
     { 
      if (f is PrintPreviewDialog) 
      { 
       f.Icon = PrintPreviewIcon; 
       PrintPreviewTimer.Enabled = false; 
      } 
     } 
    } 
+0

为什么?只需设置打印机预览对话框的图标属性! – 2016-07-03 13:24:55

+0

@ Martin.Martinsson,他正在改变打印预览对话框的图标。他使用此解决方法,因为打印预览对话框的实例不能直接在Form中使用。请注意,这是某些自定义控件的打印预览,因此他可能无法控制对话框。 – Kira 2018-02-15 10:47:48

0

我的回答,只是设置图标属性:

public DialogResult ShowPrintPreview(float zoomFactor = 1F) 
    { 
     _nPageNumber = 1; 
     _bPrintSel = false; 

     _previewDlg.PrintPreviewControl.Zoom = zoomFactor; 
     _previewDlg.Size = new Size(1200, 800); 
     _previewDlg.StartPosition = FormStartPosition.CenterScreen; 

     _previewDlg.Icon = **PrintPreviewIcon**; 
     return _previewDlg.ShowDialog(this); 
    } 

    public Icon PrintPreviewIcon { get; set; } 
0

很久以后,但是,帮助我找到了解决方案:

(printPreviewToolStripMenuItem as Form).Icon = Properties.Resources.MonIcon; 
相关问题