[Mono-bugs] [Bug 485278] New: DataGridView: Accessing OwningColumn Property of a cell from OnRowStateChanged event handler crashed on mono

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Mar 13 13:56:53 EDT 2009


https://bugzilla.novell.com/show_bug.cgi?id=485278

User tom_hindle at sil.org added comment
https://bugzilla.novell.com/show_bug.cgi?id=485278#c484989

           Summary: DataGridView: Accessing OwningColumn Property of a
                    cell from OnRowStateChanged event handler crashed on
                    mono
    Classification: Mono
           Product: Mono: Class Libraries
           Version: SVN
          Platform: i686
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Windows.Forms
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: tom_hindle at sil.org
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7)
Gecko/2009030422 Ubuntu/8.04 (hardy) Firefox/3.0.7

Test Program:

This Test code depends on bugzilla issue #484989 being fixed.


using System;
using System.Drawing;
using System.Windows.Forms;

public class MyDataGridView : DataGridView
{
    protected override void OnHandleCreated(EventArgs e)
    {
        Console.WriteLine("OnHandleCreated Start");
        base.OnHandleCreated(e);
        Console.WriteLine("OnHandleCreated End");
    }
}

public class Form1 : System.Windows.Forms.Form
{
    public Form1()
    {
        this.Load += new EventHandler(Form1_Load);
    }

    DataGridView m_grid = new MyDataGridView();

    private void Form1_Load(System.Object sender, System.EventArgs e)
    {
        m_grid.AllowUserToAddRows = false;
        m_grid.ColumnStateChanged += new
DataGridViewColumnStateChangedEventHandler(OnColumnStateChanged);
        m_grid.RowStateChanged += new
DataGridViewRowStateChangedEventHandler(OnRowStateChanged);
        Console.WriteLine("Before RowCount");
        m_grid.RowCount = 3;
        Console.WriteLine("After RowCount");
        m_grid.CurrentCell = m_grid.Rows[0].Cells[0];
        this.Controls.Add(m_grid);
        Console.WriteLine("After Add Grid to Controls");
    }

    protected virtual void OnRowStateChanged(object sender,
DataGridViewRowStateChangedEventArgs e)
    {
        Console.WriteLine(m_grid.CurrentCell.OwningColumn);
        Console.WriteLine("OnRowStateChanged {0}", e.Row);
    }

    protected virtual void OnColumnStateChanged(object sender,
DataGridViewColumnStateChangedEventArgs e)
    {
        Console.WriteLine("OnColumnStateChanged {0}", e.Column);
    }

    [STAThreadAttribute()]
    static void Main()
    {
        Application.Run(new Form1());

    }
}



Reproducible: Always

Steps to Reproduce:
1. Compile and run test code
2.
3.
Actual Results:  
Before RowCount
After RowCount
OnHandleCreated Start
System.NullReferenceException: Object reference not set to an instance of an
object
  at Form1.OnRowStateChanged (System.Object sender,
System.Windows.Forms.DataGridViewRowStateChangedEventArgs e) [0x00000] in
/home/tom/src/svn/testrepo/tom/DataGridViewTest/DataGridViewTest/DataGridViewTest.cs:39 
  at System.Windows.Forms.DataGridView.OnRowStateChanged (Int32 rowIndex,
System.Windows.Forms.DataGridViewRowStateChangedEventArgs e) [0x0001c] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs:4957 
  at System.Windows.Forms.DataGridView.OnHandleCreated (System.EventArgs e)
[0x0008a] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs:4035 
  at MyDataGridView.OnHandleCreated (System.EventArgs e) [0x0000a] in
/home/tom/src/svn/testrepo/tom/DataGridViewTest/DataGridViewTest/DataGridViewTest.cs:10 
  at System.Windows.Forms.Control.WmCreate (System.Windows.Forms.Message& m)
[0x00000] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs:5759 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m)
[0x001e4] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs:5397 
  at System.Windows.Forms.DataGridView.WndProc (System.Windows.Forms.Message&
m) [0x00000] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs:5591 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage
(System.Windows.Forms.Message& m) [0x00000] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs:234 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc
(System.Windows.Forms.Message& m) [0x00000] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs:215 
  at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr
wParam, IntPtr lParam) [0x00085] in
/home/hindlet/src/monosvn/mcs/class/Managed.Windows.Forms/System.Windows.Forms/NativeWindow.cs:242 
After Add Grid to Controls

Expected Results:  
Before RowCount
After RowCount
OnHandleCreated Start
DataGridViewTextBoxColumn { Name=, Index=0 }
OnRowStateChanged DataGridViewRow { Index=0 }
DataGridViewTextBoxColumn { Name=, Index=0 }
OnRowStateChanged DataGridViewRow { Index=1 }
DataGridViewTextBoxColumn { Name=, Index=0 }
OnRowStateChanged DataGridViewRow { Index=2 }
OnColumnStateChanged DataGridViewTextBoxColumn { Name=, Index=0 }
OnHandleCreated End
After Add Grid to Controls

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list