[Mono-winforms-list] ScrollBars.None prevents to show the last row of DataGridView

Stifu stifu at free.fr
Fri Jul 23 15:22:19 EDT 2010


The report seems all good to me. :)
Thanks for your time.


luisrl wrote:
> 
> 
> Stifu wrote:
>> 
>> Please file a bug report with a complete test case.
>> 
>> http://mono-project.com/Bugs
>> 
>> 
>> luisrl wrote:
>>> 
>>> Objetive:
>>> 
>>> Show the last row of the DataGridView automatically after adding a new
>>> row.
>>> 
>>> Problem:
>>> 
>>> When DataGridView.ScrollBars = Scrollbars.None, then the DataGridView
>>> does not show the last row.
>>> 
>>> The objetive worked in:
>>> 
>>> Windows 2000, XP, Vista, 7, etc.
>>> .NET Framework 2.0, 3.5 and 4.0
>>> 
>>> The problem happened in:
>>> 
>>> Ubuntu 10.04
>>> Mono 2.4.4
>>> 
>>> Windows Server 2008
>>> Mono 2.6.7
>>> 
>>> How to use the code:
>>> 
>>> Press the button called "Add" to add a row.
>>> Keep pressing the button called "Add" to see how the list is growing and
>>> the grid keeps showing the last row when the scrollbar is visible. It
>>> works fine.
>>> 
>>> Now, press the button called "Bars" to set the ScrollBars to
>>> "Scrollbars.None". The Scrollbar will disappear.
>>> Continue pressing the button called "Add" to see that the grid won't
>>> show the last row.
>>> 
>>> Reason:
>>> 
>>> For user interface purposes, I need to set ScrollBars.None; but when I
>>> set that, the objetive fails in mono.
>>> 
>>> Any suggestion about how to solve it?
>>> 
>>> Thanks
>>> 
>>> Code:
>>> 
>>> using System;
>>> using System.Collections.Generic;
>>> using System.ComponentModel;
>>> using System.Data;
>>> using System.Drawing;
>>> using System.Linq;
>>> using System.Text;
>>> using System.Windows.Forms;
>>> 
>>> namespace WindowsFormsApplication1
>>> {
>>>     public partial class Form1 : Form
>>>     {
>>>         DataGridView Grid = new DataGridView();
>>>         DataTable Dt = new DataTable();
>>> 
>>>         public Form1()
>>>         {
>>>             InitializeComponent();
>>>         }
>>> 
>>>         private void Form1_Load(object sender, EventArgs e)
>>>         {
>>>             //Resize the form
>>> 
>>>             this.Height = 250;
>>>             this.Width = 400;
>>> 
>>>             //Create the columns of the table
>>> 
>>>             Dt.Columns.Add("One", typeof(string));
>>>             Dt.Columns.Add("Two", typeof(string));
>>> 
>>>             //Set the grid
>>> 
>>>             Grid.AllowUserToAddRows = false;
>>>             Grid.AllowUserToDeleteRows = false;
>>>             Grid.Height = 150;
>>>             Grid.Location = new Point(50, 0);
>>>             Grid.Width = 300;
>>> 
>>>             Button BtnAdd = new Button();
>>> 
>>>             BtnAdd.Height = 25;
>>>             BtnAdd.Location = new Point(50, 175);
>>>             BtnAdd.Width = 50;
>>>             BtnAdd.Text = "Add";
>>> 
>>>             BtnAdd.Click += new System.EventHandler(this.BtnAdd_Click);
>>> 
>>>             //Create the "What if..." button
>>> 
>>>             Button BtnIf = new Button();
>>> 
>>>             BtnIf.Height = 25;
>>>             BtnIf.Location = new Point(150, 175);
>>>             BtnIf.Width = 50;
>>>             BtnIf.Text = "Bars";
>>> 
>>>             BtnIf.Click += new System.EventHandler(this.BtnIf_Click);
>>> 
>>>             //Add the controls to the form
>>> 
>>>             this.Controls.Add(Grid);
>>>             this.Controls.Add(BtnAdd);
>>>             this.Controls.Add(BtnIf);
>>> 
>>>             //Bind
>>> 
>>>             Grid.DataSource = Dt;
>>>         }
>>> 
>>>         private void Add()
>>>         {
>>>             //Add a row
>>> 
>>>             DataRow Row = Dt.NewRow();
>>> 
>>>             Row["One"] = "Can you";
>>>             Row["Two"] = "see me?";
>>> 
>>>             Dt.Rows.Add(Row);
>>> 
>>>             if (Grid.Rows.Count > 0)
>>>             {
>>>                 int Count = Grid.Rows.Count;
>>> 
>>>                 Grid.CurrentCell = Grid.Rows[Count - 1].Cells["One"];
>>>             }
>>>         }
>>> 
>>>         private void BtnAdd_Click(object sender, EventArgs e)
>>>         {
>>>             try
>>>             {
>>>                 Add();
>>>             }
>>>             catch (Exception ex)
>>>             {
>>>                 MessageBox.Show(ex.Message);
>>>             }
>>>         }
>>> 
>>>         private void BtnIf_Click(object sender, EventArgs e)
>>>         {
>>>             try
>>>             {
>>>                 if (Grid.ScrollBars == ScrollBars.Both)
>>>                 {
>>>                     Grid.ScrollBars = ScrollBars.None;
>>>                 }
>>>                 else
>>>                 {
>>>                     Grid.ScrollBars = ScrollBars.Both;
>>>                 }
>>>             }
>>>             catch (Exception ex)
>>>             {
>>>                 MessageBox.Show(ex.Message);
>>>             }
>>>         }
>>>     }
>>> }
>>> 
>> 
>> 
> 
> The report is:
> 
> https://bugzilla.novell.com/show_bug.cgi?id=625214
> 
> Please, tell me if there is something missing in the report.
> 

-- 
View this message in context: http://mono.1490590.n4.nabble.com/ScrollBars-None-prevents-to-show-the-last-row-of-DataGridView-tp2300409p2300618.html
Sent from the Mono - WinForms mailing list archive at Nabble.com.


More information about the Mono-winforms-list mailing list