[Mono-winforms-list] NullReferenceException callingSWF.Control.set_AccessibleRole

Peter Dennis Bartok Peter at novonyx.com
Wed Aug 30 14:03:33 EDT 2006


You did not just post decompiled Microsoft code, did you?

You just killed any chance of anyone who read your message fixing that 
function.

Do not post decompiled code to the list. Do not decompile MS code if you're 
involved with fixing MWF, or even making suggestions on how to fix bugs you 
encounter.

Peter

-----Original Message-----
From: "Nick Thorpe" <nt at zrho.com>
To: "Rafael Teixeira" <monoman at gmail.com>
Cc: <mono-winforms-list at lists.ximian.com>
Date: Wednesday, August 30, 2006 13:50
Subject: Re: [Mono-winforms-list] NullReferenceException 
callingSWF.Control.set_AccessibleRole


>I did some digging through the Infragistics code that I mentioned in my
>first e-mail and I do not see any class that overrides AccessibleObject.
>This UltraToolBarsDockArea extends and abstract called UltraControlBase,
>which itself extends SWF.Control. Neither of the Ultra classes overrides 
>the
>Accessibility methods.
>
>The InitControlStyles method that results in the NullRef exception is more
>or less doing this:
>
>      if (!base.DesignMode)
>      {
>            if (this.isPopupArea)
>            {
>                  base.AccessibleRole = AccessibleRole.MenuPopup;
>            }
>            else
>            {
>                  base.AccessibleRole = AccessibleRole.Grouping;
>            }
>      }
>
>In .NET 1.1 that should go to:
>
>public AccessibleRole AccessibleRole
>{
>      set
>      {
>            if (!Enum.IsDefined(typeof(AccessibleRole), value))
>            {
>                  throw new InvalidEnumArgumentException("value", (int)
>value, typeof(AccessibleRole));
>            }
>            this.Properties.SetInteger(Control.PropAccessibleRole, (int)
>value);
>      }
>}
>
>But in MWF.Control, as I'm sure you know, it's doing:
>
>public AccessibleRole AccessibleRole {
>            set {
>                AccessibilityObject.role=value;
>            }
>
>That doesn't look like a problem unless the AccessibleObject is for some
>reason not getting initialized before the set.
>
>I also tried running this on Mono 1.1.6 and it basically gave me the same
>exception with the addition of:
>
>in (wrapper stfld)
>System.Object:__stfld_wrapper_System.Int32(object,intptr,intptr,intptr,int)
>
>I don't know enough about the Mono code to say whether that is meaningful,
>although I do wonder if the AccessibleRole property has a problem with the
>value.
>
>If you have any thoughts on additional things I can look at or additional
>data I can provide please let me know. At this point this appears to be an
>incompatibility with Mono, but I certainly don't have enough evidence to 
>say
>there's a bug here.
>
>Thanks,
>Nick
>
>
>On 8/28/06, Rafael Teixeira <monoman at gmail.com> wrote:
>>
>> Looking at our code, I would say that the only chance of happening a
>> null reference error is if the control that UltraToolbarsDockArea is
>> trying to set the AccessibleRole (presumbaly itself) redefines
>> (overrides) the method:
>>
>>         protected virtual AccessibleObject CreateAccessibilityInstance() 
>> {
>>                         return new Control.ControlAccessibleObject(this);
>>         }
>>
>> With one that is not able to return a new AcessibleObject-compatible
>> instance, for some other cause.
>>
>> Good luck,
>>
>> On 8/24/06, Nick Thorpe <nt at zrho.com> wrote:
>> > Hi all,
>> >
>> > I'm trying to get a 3rd party GUI library (Infragistics NetAdvantage)
>> > working with Mono 1.1.16.1. When I run our application it dies almost
>> > instantly with this exception:
>> >
>> >  Unhandled Exception: System.NullReferenceException: Object reference
>> not
>> > set to an instance of an object
>> >   at System.Windows.Forms.Control.set_AccessibleRole
>> > (AccessibleRole value) [0x00000]
>> >   at
>> >
>> Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea.InitControlStyles
>> > () [0x00000]
>> >   at
>> > Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea..ctor
>> > () [0x00000]
>> >   at (wrapper remoting-invoke-with-check)
>> > Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea:.ctor
>> > ()
>> >   at PSOMA.Form1.InitializeComponent () [0x00000]
>> >   at PSOMA.Form1..ctor () [0x00000]
>> >   at (wrapper remoting-invoke-with-check) PSOMA.Form1:.ctor ()
>> >   at PSOMA.Form1.Main () [0x00000]
>> >
>> > I checked the CIL to see if the library was using something outside of
>> .NET,
>> > but it looks pretty standard and is seems to be failing at this call:
>> >
>> >   IL_0098:  call       instance void
>> > [System.Windows.Forms
>> ]System.Windows.Forms.Control::set_AccessibleRole(valuetype
>> > [System.Windows.Forms]System.Windows.Forms.AccessibleRole)
>> >
>> > I don't know enough about SWF to say whether this is a bug, or if these
>> > libraries are doing something unsupported. If anyone has any input on
>> the
>> > problem I'd appreciate it.
>> >
>> > Thanks,
>> > Nick
>> >
>> >
> 



More information about the Mono-winforms-list mailing list