F
Fred
Hi,
The code below works perfectly with Framework 1.1, but generates a run-time
error with the 2.0.
I use it to extend a PrintPreviewDialog to add my own PrintButton.
using System;
using System.Reflection;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintUtils
{
public class MyPrintPreviewDialog : System.Windows.Forms.PrintPreviewDialog
{
private ToolBarButton myPrintButton;
public MyPrintPreviewDialog() : base()
{
Type t = typeof(PrintPreviewDialog);
FieldInfo fi = t.GetField("toolBar1", BindingFlags.Instance |
BindingFlags.NonPublic);
FieldInfo fi2 = t.GetField("printButton", BindingFlags.Instance |
BindingFlags.NonPublic);
ToolBar toolBar1 = (ToolBar)fi.GetValue(this); <------ Error here :
"Object reference not set to in instance of an object"
ToolBarButton printButton = (ToolBarButton)fi2.GetValue(this);
printButton.Visible = false;
myPrintButton = new ToolBarButton();
myPrintButton.ToolTipText = printButton.ToolTipText;
myPrintButton.ImageIndex = 0;
ToolBarButton[] oldButtons = new ToolBarButton[toolBar1.Buttons.Count-1];
for(int i = 0 ; i < oldButtons.Length ; i++) oldButtons =
toolBar1.Buttons[i+1];
toolBar1.Buttons.Clear();
toolBar1.Buttons.Add(myPrintButton);
for(int i = 0 ; i < oldButtons.Length ; i++)
toolBar1.Buttons.Add(oldButtons);
toolBar1.ButtonClick += new
ToolBarButtonClickEventHandler(toolBar1_Click);
}
private void toolBar1_Click(object sender, ToolBarButtonClickEventArgs
eventargs)
{
if (eventargs.Button == myPrintButton)
{
PrintDialog printDialog1 = new PrintDialog();
printDialog1.Document = this.Document;
if (printDialog1.ShowDialog() == DialogResult.OK) this.Document.Print();
}
}
}
}
Thanks for helping.
The code below works perfectly with Framework 1.1, but generates a run-time
error with the 2.0.
I use it to extend a PrintPreviewDialog to add my own PrintButton.
using System;
using System.Reflection;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace PrintUtils
{
public class MyPrintPreviewDialog : System.Windows.Forms.PrintPreviewDialog
{
private ToolBarButton myPrintButton;
public MyPrintPreviewDialog() : base()
{
Type t = typeof(PrintPreviewDialog);
FieldInfo fi = t.GetField("toolBar1", BindingFlags.Instance |
BindingFlags.NonPublic);
FieldInfo fi2 = t.GetField("printButton", BindingFlags.Instance |
BindingFlags.NonPublic);
ToolBar toolBar1 = (ToolBar)fi.GetValue(this); <------ Error here :
"Object reference not set to in instance of an object"
ToolBarButton printButton = (ToolBarButton)fi2.GetValue(this);
printButton.Visible = false;
myPrintButton = new ToolBarButton();
myPrintButton.ToolTipText = printButton.ToolTipText;
myPrintButton.ImageIndex = 0;
ToolBarButton[] oldButtons = new ToolBarButton[toolBar1.Buttons.Count-1];
for(int i = 0 ; i < oldButtons.Length ; i++) oldButtons =
toolBar1.Buttons[i+1];
toolBar1.Buttons.Clear();
toolBar1.Buttons.Add(myPrintButton);
for(int i = 0 ; i < oldButtons.Length ; i++)
toolBar1.Buttons.Add(oldButtons);
toolBar1.ButtonClick += new
ToolBarButtonClickEventHandler(toolBar1_Click);
}
private void toolBar1_Click(object sender, ToolBarButtonClickEventArgs
eventargs)
{
if (eventargs.Button == myPrintButton)
{
PrintDialog printDialog1 = new PrintDialog();
printDialog1.Document = this.Document;
if (printDialog1.ShowDialog() == DialogResult.OK) this.Document.Print();
}
}
}
}
Thanks for helping.