[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