* UIListBox:增加Items变更的事件

This commit is contained in:
Sunny 2021-08-04 11:09:13 +08:00
parent 0aad9b54ee
commit 1408316ed6
7 changed files with 80 additions and 5 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -42,13 +42,14 @@ namespace Sunny.UI
ListBox.DisplayMemberChanged += Box_DisplayMemberChanged;
ListBox.ValueMemberChanged += Box_ValueMemberChanged;
ListBox.SelectedValueChanged += ListBox_SelectedValueChanged;
ListBox.ItemsCountChange += ListBox_ItemsCountChange;
ListBox.ItemsClear += ListBox_ItemsClear;
ListBox.ItemsRemove += ListBox_ItemsRemove;
edit.TextChanged += Edit_TextChanged;
DropDownWidth = 150;
fullControlSelect = true;
}
private void ListBox_ItemsCountChange(object sender, EventArgs e)
private void ListBox_ItemsRemove(object sender, EventArgs e)
{
if (ListBox.Count == 0)
{
@ -57,6 +58,12 @@ namespace Sunny.UI
}
}
private void ListBox_ItemsClear(object sender, EventArgs e)
{
Text = "";
edit.Text = "";
}
public new EventHandler TextChanged;
private void Edit_TextChanged(object sender, EventArgs e)

View File

@ -66,14 +66,44 @@ namespace Sunny.UI
listbox.MouseDown += Listbox_MouseDown;
listbox.MouseUp += Listbox_MouseUp;
listbox.MouseMove += Listbox_MouseMove;
ListBox.DataSourceChanged += Box_DataSourceChanged;
ListBox.DisplayMemberChanged += Box_DisplayMemberChanged;
ListBox.ValueMemberChanged += Box_ValueMemberChanged;
listbox.DataSourceChanged += Box_DataSourceChanged;
listbox.DisplayMemberChanged += Box_DisplayMemberChanged;
listbox.ValueMemberChanged += Box_ValueMemberChanged;
listbox.ItemsClear += Listbox_ItemsClear;
listbox.ItemsAdd += Listbox_ItemsAdd;
listbox.ItemsRemove += Listbox_ItemsRemove;
listbox.ItemsInsert += Listbox_ItemsInsert;
timer.Tick += Timer_Tick;
timer.Start();
}
public event EventHandler ItemsClear;
public event EventHandler ItemsAdd;
public event EventHandler ItemsRemove;
public event EventHandler ItemsInsert;
private void Listbox_ItemsInsert(object sender, EventArgs e)
{
ItemsInsert?.Invoke(this, e);
}
private void Listbox_ItemsRemove(object sender, EventArgs e)
{
ItemsRemove?.Invoke(this, e);
}
private void Listbox_ItemsAdd(object sender, EventArgs e)
{
ItemsAdd?.Invoke(this, e);
}
private void Listbox_ItemsClear(object sender, EventArgs e)
{
ItemsClear?.Invoke(this, e);
}
[Browsable(false)]
public ListBox ListBox => listbox;
@ -460,6 +490,44 @@ namespace Sunny.UI
SetScrollInfo();
}
public event EventHandler ItemsClear;
public event EventHandler ItemsAdd;
public event EventHandler ItemsRemove;
public event EventHandler ItemsInsert;
protected override void WndProc(ref Message m)
{
if (IsDisposed || Disposing) return;
if (IsHandleCreated)
{
const int LB_ADDSTRING = 0x0180;
const int LB_INSERTSTRING = 0x0181;
const int LB_DELETESTRING = 0x0182;
const int LB_RESETCONTENT = 0x0184;
if (m.Msg == LB_RESETCONTENT)
{
ItemsClear?.Invoke(this, EventArgs.Empty);
}
if (m.Msg == LB_DELETESTRING)
{
ItemsRemove?.Invoke(this, EventArgs.Empty);
}
if (m.Msg == LB_ADDSTRING)
{
ItemsAdd?.Invoke(this, EventArgs.Empty);
}
if (m.Msg == LB_INSERTSTRING)
{
ItemsInsert?.Invoke(this, EventArgs.Empty);
}
}
base.WndProc(ref m);
}
protected override void OnSizeChanged(EventArgs e)
{
if (Bar != null && Bar.Visible)