1. check out my code, which also enforces single selection (below)
2. ReadOnly = true
3. dunno
public class SSDataGrid : DataGrid
{
private int oldSelectedRow = -1;
private bool first_click = true;
public SSDataGrid() : base()
{
CurrentCellChanged += new EventHandler(EnforceSingleSelect);
}
/// <summary>
/// select a row and scroll to it
/// </summary>
/// <remarks>
/// sets input focus to the SSDataGrid
/// </remarks>
public new void Select(int row)
{
if(oldSelectedRow >= 0)
base.UnSelect(oldSelectedRow);
base.Select(row);
base.CurrentCell = new DataGridCell(row, 1);
}
private void EnforceSingleSelect(object sender, EventArgs e)
{
if(CurrentRowIndex != oldSelectedRow && -1 != oldSelectedRow)
UnSelect(oldSelectedRow);
oldSelectedRow = CurrentRowIndex;
// select whole row
// note: endless loop avoided since Select(CurrentRowIndex) won't
send a CurrentCellChanged event
Select(CurrentRowIndex);
}
protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
{
// don't call the base class if left mouse down,
// so dragging won't select multiple lines
if(e.Button != MouseButtons.Left)
base.OnMouseMove(e);
}
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
{
//don't call the base class if in header
DataGrid.HitTestInfo hti = this.HitTest(new Point(e.X, e.Y));
if(hti.Type == DataGrid.HitTestType.Cell)
{
base.OnMouseDown(e);
if(first_click)
{
EnforceSingleSelect(/*dummy*/this, /*dummy*/e);
first_click = false;
}
}
else if(hti.Type == DataGrid.HitTestType.RowHeader)
{
if((Control.ModifierKeys & Keys.Shift) == 0)
base.OnMouseDown(e);
else
this.Select(hti.Row);
}
}
}
Morgan wrote:
> Did you look at the classes/ in the /ColumnStyles or folder? I believe it
> would be in there, since so much of the layout for the datagrid derives from
> the tablestyles in those classes.
>
> "Jason Hickey" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>
>>All,
>> Maybe I'm just missing it but how do you do the following three things
>>with a WinForms DataGrid...
>>
>> 1: Make it so when the user clicks on any part of a row the FULL
>
> row
>
>>becomes selected
>> 2: Hide the add new row from the bottom of the grid
>> 3: Remove the grey side bar from the left of the grid
>>
>> For an example see the main grid in the TaskVision Demo at:
>> http://www.windowsforms.net/default....dex=7&tabId=44
>>
>>This is the EXACT grid I want. I took a look at the source and I can't
>
> seem
>
>>to find where they made the tweaks.
>>
>>The dgGrid is of type System.Windows.Forms.DataGrid so it is still the
>
> basic
>
>>grid.
>>
>>I'm pretty sure it is something from the class "public sealed class
>>MainFormDgStyle" but I can't seem to find what.
>>
>> -Jason
>>
>>
>>
>
>
>