gpt4 book ai didi

c# - 在显示之前更改组合框的 SelectedValue

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:18 28 4
gpt4 key购买 nike

问题很奇怪,我有一个组合框,它通过 DataSource 属性正确地填充了项目(它绑定(bind)到一个 bindingSource 项目,它包含一个显示成员和一个值成员),这是一个允许我选择供应商的简单组合框通过在他们的名字而不是他们的 ID 之间进行选择。问题是当我更改 SelectedValue 因为我想将一个选项设置为默认值时,我发现 List 属性为空(我继承了另一个中的组合框类),但是当显示组合框时,我里面有项目,所以问题可能与 WHEN 数据真正从数据源加载有关(也许它仅在显示后才加载?)。我应该什么时候更改我的 SelectedValue?控件中没有任何“显示”事件

谢谢你的建议

更新 1:我以您的方式进行了测试,但事实并非如此( key 很长,但即使我施放它也不起作用),事实上有趣的是我有一个允许我设置 SelectedValue 的 setter,即使没有t 抛出异常,在下一个 MessageBox 中,Items.Count 给我 0 作为值,这很奇怪,因为当组合框显示在表单上时,它具有我想要的所有值。这是我的二传手的代码:

    public object InputValue
{
get
{
return SelectedValue;
}
set
{
SelectedValue = ((long)value);
MessageBox.Show(this.Items.Count.ToString());
}
}

最佳答案

您不是唯一遇到此问题的人,很高兴听到不仅是我。没有发生的事情与类型转换有关 - 如果您将 SelectedValue 显式转换为数据源中的 exact 类型,您会发现您能够设置值成功。

例如:

comboBox1.ValueMember = "Value";
comboBox1.DisplayMember = "Key";
object ds = new KeyValuePair<string, long>[] {
new KeyValuePair<string,long>("a",0),
new KeyValuePair<string,long>("b",1),
new KeyValuePair<string,long>("c",2),
new KeyValuePair<string,long>("d",3),
new KeyValuePair<string,long>("e",4)
};
comboBox1.DataSource = ds;
comboBox1.SelectedValue = 3; // this won't work
comboBox1.SelectedValue = (long)3; // this will work

无论出于何种原因,即使作为 long 的“3”等于作为 int 的“3”,ComboBox 也会拒绝玩球,除非您的类型完全正确。

我可以推断这与 WinForms ComboBox 是 COM 版本的包装器这一事实有关,并且在创建 native 控件后会表现出不同的行为。

我希望这对您的特定问题有所帮助!

关于c# - 在显示之前更改组合框的 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com