2012-07-13 106 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; 
相關問題