[Mono-winforms-list] Bug in System.Windows.Forms.Control:get_ContainsFocus ()?

Paddy Joy mono at paddyjoy.com
Wed Jun 21 06:40:39 EDT 2006


Thanks Paul,

So do you think it could be a bug with resolving the base class? It 
seems from the trace that it is going into a continuous loop, like it is 
calling ContainsFocus on itself.

Paddy

> Hi,
>
>   
>>  mcs base.cs -r:System.Windows.Forms -r:System.Data -r:System.Drawing
>>
>> run mono base.exe
>>
>> Click on button1.
>>     
>
> Code
>
> 8-->
> using System;
> using System.Drawing;
> using System.Collections;
> using System.ComponentModel;
> using System.Windows.Forms;
> using System.Data;
>
> namespace WindowsApplication4
> {
>   public class Form1 : System.Windows.Forms.Form
>     {
>        private System.Windows.Forms.Button button1;
>        private System.Windows.Forms.Button button2;
>        private System.ComponentModel.Container components = null;
>
>        public Form1()
>        {
>           InitializeComponent();
>        }
>
>        protected override void Dispose( bool disposing )
>        {
>          if( disposing )
>          {
>            if (components != null) 
>            {
>              components.Dispose();
>            }
>          }
>          base.Dispose( disposing );
>        }
>
>        private void InitializeComponent()
>        {
>          this.button1 = new System.Windows.Forms.Button();
>          this.button2 = new testbutton();
>          this.SuspendLayout();
>
>          this.button1.Location = new System.Drawing.Point(96, 32);
>          this.button1.Name = "button1";
>          this.button1.TabIndex = 0;
>          this.button1.Text = "button1";
>          this.button1.Click += new
> System.EventHandler(this.button1_Click);
>  
>          this.button2.Location = new System.Drawing.Point(96, 80);
>          this.button2.Name = "button2";
>          this.button2.TabIndex = 1;
>          this.button2.Text = "button2";
>
>          this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
>          this.ClientSize = new System.Drawing.Size(292, 262);
>          this.Controls.Add(this.button2);
>          this.Controls.Add(this.button1);
>          this.Name = "Form1";
>          this.Text = "Form1";
>          this.ResumeLayout(false);
>       }
>
>       [STAThread]
>       static void Main() 
>       {
>          Application.Run(new Form1());
>       }
>
>       private void button1_Click(object sender, System.EventArgs e)
>       {
>         Console.Write(button2.Focused);
>       }
>    }
>
>    public class testbutton : System.Windows.Forms.Button 
>    {
>                 
>      public testbutton()
>      {
>      }
>
>      public override bool Focused
>      {
>         get
>         {
>            return base.ContainsFocus;
>         }
>      }
>    }
> }
> <--8
>
> ContainsFocus is working fine - as a quick test I altered button2 to be
> a button and created a new Click event for it as well as altering the
> button1 ClickEvent - they now just return base.ContainsFocus to the
> console.
>
> It looks more to me that there is a problem accessing something which is
> not properly created (testbutton()).
>
> TTFN
>
> Paul
>
>   



More information about the Mono-winforms-list mailing list