none
???浏览器标题栏自定义标题栏??? RRS feed

  • 问题

  • 我用C#编写浏览器,当我自己自定义标题栏的时候,在编写关闭按钮测试时,弹出“

    后VS又转到

    代码是:private void closelineShape2_Click(object sender, EventArgs e)
            {
                this.Close();
            }

    该如何解决此问题

    还有:最大化和最小化按钮应如何自定义编写。


    2012年7月11日 13:29

答案

全部回复

  • 没法解决……信息量不足,无法可靠重现。至少把代码和调用堆栈贴出来啊


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月11日 15:02
    版主
  • 我现已附上图片,望你解决问题

    2012年7月12日 7:00
  • 请问是错在 this.Close(); 这行?
    如果是的话,Form1物件在这之前是不是就被Dispose了!

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月12日 8:17
  • 如果是你说的那样,那该怎么解决
    2012年7月12日 8:48
  • 请找一下代码,看看有其他地方呼叫 this.Close();

    可以把代码和调用堆栈贴出来嗎?


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月12日 9:00
  • 贴出来了

    2012年7月12日 9:21
  • 请问有使用Timer吗?

    另外,您的程式码可给测试一下吗?


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年7月12日 10:12
  • 没使用Timer,程式码是什么
    2012年7月12日 10:22
  • 您的代码专案可放在SkyDrive上? 给我下载测试看看!

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年7月12日 10:38
  • 不懂什么意思

    2012年7月12日 11:10
  • 乱马客的意思是说你可以把你的代码放到SKYDRIVE之类的网络空间,让大家可以去下载下来帮你找到问题发生的原因。有关SKYDRIVE的介绍可以参考下列的网址:

    http://windows.microsoft.com/zh-tw/skydrive/home?SignedIn=1


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月12日 14:33
  • 参考http://channel9.msdn.com/forums/TechOff/520076-VB-2010-Error-PowerPacks-Line-Shape-Dispose/


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月12日 15:25
    版主
  • 请老兄讲解一下,全是英文啊,还有我用的是VC#啊。

    2012年7月13日 3:15
  • 就是用了VB的power pack的shape container就会有这样的问题……你的堆栈上不是有这个么?


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月13日 3:28
    版主
  • 哦,那该怎样解决啊

    2012年7月13日 6:44
  • 您好,
    在您Form Designer.cs中有Dispose Method,

    protected override void Dispose(bool disposing)
    {
    	if (disposing && (components != null))
    	{
    		components.Dispose();
    	}
    	base.Dispose(disposing);
    }
    改成以下的Code, 試看看=>
    protected override void Dispose(bool disposing)
    {
    	try {
    		if (disposing)
    			DisposeShapeContainer(ShapeContainer1);
    		if (disposing && components != null) {
    			components.Dispose();
    		}
    	} finally {
    		base.Dispose(disposing);
    	}
    }
    
    
    protected void DisposeShapeContainer(Microsoft.VisualBasic.PowerPacks.ShapeContainer AShapeContainer)
    {
    	if (AShapeContainer != null) {
    		if (AShapeContainer.Shapes != null) {
    			System.Collections.Generic.List<Microsoft.VisualBasic.PowerPacks.Shape> tshapes = new System.Collections.Generic.List<Microsoft.VisualBasic.PowerPacks.Shape>();
    			foreach (Microsoft.VisualBasic.PowerPacks.Shape tshape in AShapeContainer.Shapes) {
    				tshapes.Add(tshape);
    			}
    			AShapeContainer.Shapes.Clear();
    			AShapeContainer.Shapes.Dispose();
    			foreach (Microsoft.VisualBasic.PowerPacks.Shape tshape in tshapes) {
    				tshape.Dispose();
    			}
    		}
    		AShapeContainer.Dispose();
    	}
    }


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月13日 6:58
  • 还是出现问题了,也是和上面一样的问题
    2012年7月13日 7:10
  • 请问代码方便给大家下载调试吗

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月13日 7:15
  • 需要哪些代码
    2012年7月13日 7:30
  • 需要哪些代码

    假设你发生上述错误的FORM叫FORM1,或许你可以提供如下图红色框框处的档案或代码,好让大家能更快帮你找出问题的原因,谢谢。


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年7月13日 7:52
  • Form.Designer.cs:

    namespace WindowsFormsApplication1
    {
        partial class Form1
        {
            /// <summary>
            /// 必需的设计器变量。
            /// </summary>
            private System.ComponentModel.IContainer components = null;

            /// <summary>
            /// 清理所有正在使用的资源。
            /// </summary>
            /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }

            #region Windows 窗体设计器生成的代码

            /// <summary>
            /// 设计器支持所需的方法 - 不要
            /// 使用代码编辑器修改此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.panel1 = new System.Windows.Forms.Panel();
                this.shapeContainer1 = new Microsoft.VisualBasic.PowerPacks.ShapeContainer();
                this.lineShape3 = new Microsoft.VisualBasic.PowerPacks.LineShape();
                this.rectangleShape1 = new Microsoft.VisualBasic.PowerPacks.RectangleShape();
                this.lineShape2 = new Microsoft.VisualBasic.PowerPacks.LineShape();
                this.lineShape1 = new Microsoft.VisualBasic.PowerPacks.LineShape();
                this.panel1.SuspendLayout();
                this.SuspendLayout();
                //
                // panel1
                //
                this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
                this.panel1.Controls.Add(this.shapeContainer1);
                this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
                this.panel1.Location = new System.Drawing.Point(0, 0);
                this.panel1.Name = "panel1";
                this.panel1.Size = new System.Drawing.Size(646, 66);
                this.panel1.TabIndex = 0;
                //
                // shapeContainer1
                //
                this.shapeContainer1.Location = new System.Drawing.Point(0, 0);
                this.shapeContainer1.Margin = new System.Windows.Forms.Padding(0);
                this.shapeContainer1.Name = "shapeContainer1";
                this.shapeContainer1.Shapes.AddRange(new Microsoft.VisualBasic.PowerPacks.Shape[] {
                this.lineShape3,
                this.rectangleShape1,
                this.lineShape2,
                this.lineShape1});
                this.shapeContainer1.Size = new System.Drawing.Size(646, 66);
                this.shapeContainer1.TabIndex = 0;
                this.shapeContainer1.TabStop = false;
                //
                // lineShape3
                //
                this.lineShape3.Cursor = System.Windows.Forms.Cursors.Hand;
                this.lineShape3.Name = "lineShape3";
                this.lineShape3.X1 = 566;
                this.lineShape3.X2 = 584;
                this.lineShape3.Y1 = 17;
                this.lineShape3.Y2 = 17;
                //
                // rectangleShape1
                //
                this.rectangleShape1.Cursor = System.Windows.Forms.Cursors.Hand;
                this.rectangleShape1.Location = new System.Drawing.Point(592, 9);
                this.rectangleShape1.Name = "rectangleShape1";
                this.rectangleShape1.Size = new System.Drawing.Size(17, 16);
                //
                // lineShape2
                //
                this.lineShape2.Cursor = System.Windows.Forms.Cursors.Hand;
                this.lineShape2.Name = "lineShape2";
                this.lineShape2.X1 = 617;
                this.lineShape2.X2 = 639;
                this.lineShape2.Y1 = 27;
                this.lineShape2.Y2 = 7;
                this.lineShape2.Click += new System.EventHandler(this.lineShape2_Click);
                //
                // lineShape1
                //
                this.lineShape1.Cursor = System.Windows.Forms.Cursors.Hand;
                this.lineShape1.Name = "lineShape1";
                this.lineShape1.X1 = 617;
                this.lineShape1.X2 = 639;
                this.lineShape1.Y1 = 7;
                this.lineShape1.Y2 = 27;
                this.lineShape1.Click += new System.EventHandler(this.lineShape2_Click);
                //
                // Form1
                //
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(646, 509);
                this.Controls.Add(this.panel1);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
                this.Name = "Form1";
                this.Text = "Form1";
                this.panel1.ResumeLayout(false);
                this.ResumeLayout(false);

            }

            #endregion

            private System.Windows.Forms.Panel panel1;
            private Microsoft.VisualBasic.PowerPacks.ShapeContainer shapeContainer1;
            private Microsoft.VisualBasic.PowerPacks.LineShape lineShape2;
            private Microsoft.VisualBasic.PowerPacks.LineShape lineShape1;
            private Microsoft.VisualBasic.PowerPacks.RectangleShape rectangleShape1;
            private Microsoft.VisualBasic.PowerPacks.LineShape lineShape3;

    Form1.resx:

    2012年7月13日 7:57
  • 您好,

    Dispose Method 没有改成前面的那个代码哦!

    protected override void Dispose(bool disposing) { try { if (disposing) DisposeShapeContainer(ShapeContainer1); if (disposing && components != null) { components.Dispose(); } } finally { base.Dispose(disposing); } }

    // .......


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年7月13日 8:06
  • 改了,过后发现还是有问题,就还原了
    2012年7月13日 8:10
  • 您好,您的this.Close(); 改成

    this.BeginInvoke((EventHandler)delegate { this.Close(); });

     


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月13日 9:55
  • 果然没再出问题了,请问能讲解一下原因吗?     可是,按钮的颜色变化无法使用?

    随便帮忙一下,最大化和最小化及推动窗口移动的命令该怎么写呀?

    2012年7月14日 2:22
  • 您好,
    最大化或正常化

    if (this.WindowState == FormWindowState.Maximized)
    {
    	this.WindowState = FormWindowState.Normal;
    }
    else if (this.WindowState == FormWindowState.Normal)
    {
    	this.WindowState = FormWindowState.Maximized;
    }
    this.Show();

    最小化

    this.WindowState = FormWindowState.Minimized;
    this.Show();
    另外,您可以參考: Fancy Windows Forms


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年7月15日 5:05