* UIComboBox: 过滤时修复ValueMember绑定值的显示
This commit is contained in:
parent
82355a3cda
commit
686d5cf828
@ -27,6 +27,7 @@
|
|||||||
* 2022-04-15: V3.1.3 增加过滤
|
* 2022-04-15: V3.1.3 增加过滤
|
||||||
* 2022-04-16: V3.1.3 过滤下拉控跟随主题配色
|
* 2022-04-16: V3.1.3 过滤下拉控跟随主题配色
|
||||||
* 2020-04-20: V3.1.5 过滤文字为空时,下拉框显示所有数据列表
|
* 2020-04-20: V3.1.5 过滤文字为空时,下拉框显示所有数据列表
|
||||||
|
* 2020-05-04: V3.1.8 过滤时修复ValueMember绑定值的显示
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -65,8 +66,8 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
SelectTextChange = true;
|
SelectTextChange = true;
|
||||||
filterSelectedItem = filterList[(int)sender];
|
filterSelectedItem = filterList[(int)sender];
|
||||||
filterSelectedValue = GetItemText(filterSelectedItem);
|
filterSelectedValue = GetItemValue(filterSelectedItem);
|
||||||
Text = filterSelectedValue.ToString();
|
Text = GetItemText(filterSelectedItem).ToString();
|
||||||
edit.SelectionStart = Text.Length;
|
edit.SelectionStart = Text.Length;
|
||||||
SelectedValueChanged?.Invoke(this, EventArgs.Empty);
|
SelectedValueChanged?.Invoke(this, EventArgs.Empty);
|
||||||
SelectTextChange = false;
|
SelectTextChange = false;
|
||||||
@ -126,8 +127,8 @@ namespace Sunny.UI
|
|||||||
{
|
{
|
||||||
SelectTextChange = true;
|
SelectTextChange = true;
|
||||||
filterSelectedItem = filterList[idx];
|
filterSelectedItem = filterList[idx];
|
||||||
filterSelectedValue = GetItemText(filterSelectedItem);
|
filterSelectedValue = GetItemValue(filterSelectedItem);
|
||||||
Text = filterSelectedValue.ToString();
|
Text = GetItemText(filterSelectedItem).ToString();
|
||||||
edit.SelectionStart = Text.Length;
|
edit.SelectionStart = Text.Length;
|
||||||
SelectedValueChanged?.Invoke(this, EventArgs.Empty);
|
SelectedValueChanged?.Invoke(this, EventArgs.Empty);
|
||||||
SelectTextChange = false;
|
SelectTextChange = false;
|
||||||
@ -205,6 +206,23 @@ namespace Sunny.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object GetItemValue(object item)
|
||||||
|
{
|
||||||
|
if (dataManager == null)
|
||||||
|
return item;
|
||||||
|
|
||||||
|
if (ValueMember.IsNullOrWhiteSpace())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
PropertyDescriptor descriptor = dataManager.GetItemProperties().Find(ValueMemberBindingMemberInfo.BindingField, true);
|
||||||
|
if (descriptor is not null)
|
||||||
|
{
|
||||||
|
return descriptor.GetValue(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public Control ExToolTipControl()
|
public Control ExToolTipControl()
|
||||||
{
|
{
|
||||||
return edit;
|
return edit;
|
||||||
@ -322,6 +340,7 @@ namespace Sunny.UI
|
|||||||
FillFilterTextEmpty();
|
FillFilterTextEmpty();
|
||||||
filterSelectedItem = null;
|
filterSelectedItem = null;
|
||||||
filterSelectedValue = null;
|
filterSelectedValue = null;
|
||||||
|
SelectedValueChanged?.Invoke(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -635,9 +654,15 @@ namespace Sunny.UI
|
|||||||
public string ValueMember
|
public string ValueMember
|
||||||
{
|
{
|
||||||
get => ListBox.ValueMember;
|
get => ListBox.ValueMember;
|
||||||
set => ListBox.ValueMember = value;
|
set
|
||||||
|
{
|
||||||
|
ListBox.ValueMember = value;
|
||||||
|
ValueMemberBindingMemberInfo = new BindingMemberInfo(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BindingMemberInfo ValueMemberBindingMemberInfo;
|
||||||
|
|
||||||
[
|
[
|
||||||
DefaultValue(null),
|
DefaultValue(null),
|
||||||
Browsable(false),
|
Browsable(false),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user