[Mono-winforms-list] ScrollBars.None prevents to show the last row of DataGridView
luisrl
larlxz at gmail.com
Fri Jul 23 12:16:20 EDT 2010
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);
}
}
}
}
--
View this message in context: http://mono.1490590.n4.nabble.com/ScrollBars-None-prevents-to-show-the-last-row-of-DataGridView-tp2300409p2300409.html
Sent from the Mono - WinForms mailing list archive at Nabble.com.
More information about the Mono-winforms-list
mailing list