* UIComboDataGridView: 增加行多选

This commit is contained in:
Sunny 2022-04-16 23:06:58 +08:00
parent 1ab593385b
commit 95776600e3
3 changed files with 35 additions and 10 deletions

View File

@ -30,7 +30,8 @@ namespace Sunny.UI
private void DataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) private void DataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{ {
btnOK.PerformClick(); if (!dataGridView.MultiSelect)
btnOK.PerformClick();
} }
public override void SetDPIScale() public override void SetDPIScale()
@ -294,10 +295,17 @@ namespace Sunny.UI
//UConsole.WriteConsole("所选行:"+dataGridView.SelectedIndex.ToString(),e,sender); //UConsole.WriteConsole("所选行:"+dataGridView.SelectedIndex.ToString(),e,sender);
if (dataGridView.RowCount > 0 && dataGridView.SelectedIndex >= 0) if (dataGridView.RowCount > 0 && dataGridView.SelectedIndex >= 0)
{ {
if (ShowFilter) if (dataGridView.MultiSelect)
DoValueChanged(this, dataGridView.SelectedRows.Count > 0 ? dataGridView.SelectedRows[0] : null); {
DoValueChanged(this, dataGridView.SelectedRows);
}
else else
DoValueChanged(this, dataGridView.SelectedIndex); {
if (ShowFilter)
DoValueChanged(this, dataGridView.SelectedRows.Count > 0 ? dataGridView.SelectedRows[0] : null);
else
DoValueChanged(this, dataGridView.SelectedIndex);
}
} }
Close(); Close();
@ -371,4 +379,4 @@ namespace Sunny.UI
} }
} }
} }
} }

View File

@ -19,6 +19,7 @@
* 2020-09-01: V3.0.6 * 2020-09-01: V3.0.6
* 2021-11-05: V3.0.8 * 2021-11-05: V3.0.8
* 2022-03-22: V3.1.1 * 2022-03-22: V3.1.1
* 2022-04-16: V3.1.3
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -45,7 +46,6 @@ namespace Sunny.UI
this.ButtonClick += UIComboDataGridView_ButtonClick; this.ButtonClick += UIComboDataGridView_ButtonClick;
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
private void UIComboDataGridView_ButtonClick(object sender, EventArgs e) private void UIComboDataGridView_ButtonClick(object sender, EventArgs e)
@ -78,6 +78,7 @@ namespace Sunny.UI
base.OnFontChanged(e); base.OnFontChanged(e);
if (item != null) item.DataGridView.Font = Font; if (item != null) item.DataGridView.Font = Font;
} }
[DefaultValue(false)] [DefaultValue(false)]
public bool ShowFilter { get; set; } public bool ShowFilter { get; set; }
@ -88,20 +89,36 @@ namespace Sunny.UI
ItemForm = new UIDropDown(item); ItemForm = new UIDropDown(item);
} }
[DefaultValue(false), Description("行多选"), Category("SunnyUI")]
public bool MultiSelect
{
get => DataGridView.MultiSelect;
set => DataGridView.MultiSelect = value;
}
public UIDataGridView DataGridView => item.DataGridView; public UIDataGridView DataGridView => item.DataGridView;
public event OnSelectIndexChange SelectIndexChange; public event OnSelectIndexChange SelectIndexChange;
public delegate void OnValueChanged(object sender, object value); public delegate void OnValueChanged(object sender, object value);
public delegate void OnValuesChanged(object sender, DataGridViewSelectedRowCollection value);
public event OnValueChanged ValueChanged; public event OnValueChanged ValueChanged;
public event OnValuesChanged MultiValueChanged;
protected override void ItemForm_ValueChanged(object sender, object value) protected override void ItemForm_ValueChanged(object sender, object value)
{ {
if (ShowFilter) if (MultiSelect)
ValueChanged?.Invoke(this, value); {
MultiValueChanged?.Invoke(this, (DataGridViewSelectedRowCollection)value);
}
else else
SelectIndexChange(this, value.ToString().ToInt()); {
if (ShowFilter)
ValueChanged?.Invoke(this, value);
else
SelectIndexChange(this, value.ToString().ToInt());
}
} }
[DefaultValue(null)] [DefaultValue(null)]

View File

@ -271,7 +271,7 @@ namespace Sunny.UI
CellBorderStyle = DataGridViewCellBorderStyle.None; CellBorderStyle = DataGridViewCellBorderStyle.None;
//禁止行多选 //禁止行多选
MultiSelect = false; //MultiSelect = false;
//不显示数据行标题 //不显示数据行标题
RowHeadersVisible = false; RowHeadersVisible = false;