我仿照
http://blog.csdn.net/jhtyt/articles/666108.aspx
这个用VS2003做了一个打印控件
然后把他放在VS2005的网站下面进行打印用户要打印的时候首先要装.net Freamework 1.1
一切正常
但当用户也装了.net freamework 2.0
的时候里面有这一段代码执行没有效果
------------------------------------------------------
foreach(Control c in this.printPreviewDialog1.Controls)
{
if (c is ToolBar)
{
ToolBar tool = (ToolBar)c;
if (tool.Buttons.Count>0)
{
tool.Buttons[0].Visible=false;
}
break;
}
}
printPreviewDialog1.ShowDialog(this);
也就是去掉printPreviewDialog那里面的打印控钮
-----------------------------------------------
以下是在VS2005做印可行的代码
ToolStrip tool = printPreviewDialog1.Controls["toolStrip1"] as ToolStrip;
if (tool != null)
{
    tool.Items["printToolStripButton"].Visible = false;
}   
----------------------------------------------
我的想法是
.net1.1 做的那个打印显示打印预览上面的工具栏是
toolBar
而.net 2.0 为ToolStrip
因为装了.net2.0让.net1.1的toolbar失效我要怎么办才能让我的.net 1.1的打印控件在装了.net2.0
也可以去掉那个打印预览谢谢PS:可能有人会问做成.net2.0的打印控件不就得了吗?
   是的做成.net2.0就没有这个问题
   但是让用户装一个.net freamework 2.0 sdk 要有462MB
   而一个.net freamework 1.1 为23.2M
详细请看:http://community.csdn.net/Expert/topic/5371/5371385.xml?temp=.9257471

解决方案 »

  1.   

    而.net 2.0 为ToolStrip
    因为装了.net2.0让.net1.1的toolbar失效
    =====>没太看懂
    .net 2.0中也可有 toolbar
      

  2.   

    那我就不明白我
    我在只有装了.net 1.1的机子上可以正常的去掉那个打印控件
    但是我再多装.net 2.0的机子的话那个打印按钮就还会在那里
      

  3.   

    foreach(Control c in this.printPreviewDialog1.Controls)
    {      MessageBox.Show(c.GetType().ToString());
    这样来看看控件的类型到底是什么
      

  4.   

    哈哈和我想的一样
    他变成了
    System.Window.Form.ToolStrip这相时候
    if (c is ToolBar)   //这一句就无效了
    {
    ToolBar tool = (ToolBar)c;
    if (tool.Buttons.Count>0)
    {
    tool.Buttons[0].Visible=false;
    }
    break;
      

  5.   

    然后我试着给他加上
    try
    {
      ToolStrip tool = printPreviewDialog1.Controls["toolStrip1"] as ToolStrip;
      if (tool != null)
      {
          tool.Items["printToolStripButton"].Visible = false;
      }
    }
    但又提示没有引用ToolStrip
    因为VS2003没有这个
      

  6.   

    你的意思是,2003下printPreviewDialog1的按纽在2.0运行时变成toolstrip了?
      

  7.   

    re;cpp2017(慕白兄)
    是的2003下printPreviewDialog1的按纽在2.0运行时变成toolstrip了然后现在我用
    foreach(System.Windows.Forms.Control c in this.printPreviewDialog1.Controls)
    {
    if(!(c is PrintPreviewControl)) //不显示工具 只想示预览区
    {
    c.Visible=false;
    }
    else
    {
    ((PrintPreviewControl)c).Zoom=1; //100%显示
    }
    }
    我用上面的方法把除PrintPreviewControl以外的东西全都Visible=false;
    现在在.net 2.0 中可以将上面的工具条去掉
    明天到台.net 1.1的看试一下可行不可以谢谢
      

  8.   

    应该可以的.如果不行.
    可以这样.if( c.GetType().ToString() == "System.Window.Form.ToolStrip")
    {
        c.Visible = false;
    }//这样1.1中就不需要引用System.Window.Form.ToolStrip了
      

  9.   

    谢谢和我上面的差不多,但是如果有这样的话那接下来的这一句
    if (c.GetType().ToString() == "System.Window.Form.ToolStrip")
    {
         c.Items["printToolStripButton"].Visible = false;    //这一句要怎么改呢
    }因为没有引用ToolStrip
    所以c就不会有Items[]
      

  10.   

    如果这样,不能控件每个items 了.