* UIDataGridView: 更新单选时选中值SelectedIndex值

This commit is contained in:
Sunny 2022-01-21 09:52:05 +08:00
parent ebb549c15d
commit dd15808c62
2 changed files with 31 additions and 32 deletions

Binary file not shown.

View File

@ -11,7 +11,7 @@
* If you use this code, please keep this note. * If you use this code, please keep this note.
* 使 * 使
****************************************************************************** ******************************************************************************
* : UIGrid.cs * : UIDataGridView.cs
* : * :
* : V3.1 * : V3.1
* : 2020-01-01 * : 2020-01-01
@ -27,6 +27,7 @@
* 2021-04-29: V3.0.3 * 2021-04-29: V3.0.3
* 2021-05-22: V3.0.4 RowHeight23 * 2021-05-22: V3.0.4 RowHeight23
* 2021-06-27: V3.0.4 * 2021-06-27: V3.0.4
* 2022-01-21: V3.1.0 SelectedIndex值
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -380,7 +381,6 @@ namespace Sunny.UI
Page Page
} }
protected override void OnRowsAdded(DataGridViewRowsAddedEventArgs e) protected override void OnRowsAdded(DataGridViewRowsAddedEventArgs e)
{ {
base.OnRowsAdded(e); base.OnRowsAdded(e);
@ -595,73 +595,72 @@ namespace Sunny.UI
} }
} }
private int selectedIndex = -1;
[Browsable(false)] [Browsable(false)]
public int SelectedIndex public int SelectedIndex
{ {
get => selectedIndex; get
{
if (SelectedRows.Count > 0)
return SelectedRows[0].Index;
else
return -1;
}
set set
{ {
if (Rows.Count == 0) if (Rows.Count == 0)
{ {
selectedIndex = -1;
return; return;
} }
if (value >= 0 && value < Rows.Count) if (value >= 0 && value < Rows.Count)
{ {
foreach (DataGridViewRow row in SelectedRows)
{
row.Selected = false;
}
Rows[value].Selected = true; Rows[value].Selected = true;
selectedIndex = value;
FirstDisplayedScrollingRowIndex = value; FirstDisplayedScrollingRowIndex = value;
if (selectedIndex >= 0 && selectedIndex <= Rows.Count)
jumpIndex = selectedIndex;
selectedIndex = value;
SelectIndexChange?.Invoke(this, value); SelectIndexChange?.Invoke(this, value);
} }
else
{
selectedIndex = -1;
}
} }
} }
private int jumpIndex = -1;
protected override void OnDataSourceChanged(EventArgs e) protected override void OnDataSourceChanged(EventArgs e)
{ {
base.OnDataSourceChanged(e); base.OnDataSourceChanged(e);
SetScrollInfo(); SetScrollInfo();
//selectedIndex = -1;
} }
public delegate void OnSelectIndexChange(object sender, int index); public delegate void OnSelectIndexChange(object sender, int index);
public event OnSelectIndexChange SelectIndexChange; public event OnSelectIndexChange SelectIndexChange;
protected override void OnCellClick(DataGridViewCellEventArgs e) protected override void OnRowEnter(DataGridViewCellEventArgs e)
{ {
base.OnCellClick(e); base.OnRowEnter(e);
if (e.RowIndex >= 0 && selectedIndex != e.RowIndex) if (e.RowIndex == jumpIndex)
{
jumpIndex = -1;
return;
}
if (selectedIndex != e.RowIndex)
{ {
selectedIndex = e.RowIndex; selectedIndex = e.RowIndex;
SelectIndexChange?.Invoke(this, e.RowIndex); SelectIndexChange?.Invoke(this, e.RowIndex);
} }
} }
// protected override void OnGridColorChanged(EventArgs e) private int selectedIndex = -1;
// {
// base.OnGridColorChanged(e);
// _style = UIStyle.Custom;
// }
//
// protected override void OnDefaultCellStyleChanged(EventArgs e)
// {
// base.OnDefaultCellStyleChanged(e);
// _style = UIStyle.Custom;
// }
//
// protected override void OnColumnDefaultCellStyleChanged(DataGridViewColumnEventArgs e)
// {
// base.OnColumnDefaultCellStyleChanged(e);
// _style = UIStyle.Custom;
// }
public DataGridViewColumn AddColumn(string columnName, string dataPropertyName, int fillWeight = 100, DataGridViewContentAlignment alignment = DataGridViewContentAlignment.MiddleCenter, bool readOnly = true) public DataGridViewColumn AddColumn(string columnName, string dataPropertyName, int fillWeight = 100, DataGridViewContentAlignment alignment = DataGridViewContentAlignment.MiddleCenter, bool readOnly = true)
{ {