出于某种原因,当从DataSource(一个简单的BindingList)添加或删除项时,ComboBox会相应地更新,但如果我编辑这样的项,则它不会自动更新:
myBindingList[index].Name = "NewName";
myBindingList[index].Value = newValue;
Run Code Online (Sandbox Code Playgroud)
为了在编辑项目时更新它而不是创建或删除项目,我必须在更改后执行此操作:
myComboBox.DataSource = null;
myComboBox.DataSource = myBindingList;
Run Code Online (Sandbox Code Playgroud)
这解决了问题,但它似乎是一个相当混乱的解决方案.对于大型列表,它可能会变慢(我知道的过早优化),但仍然有办法强制ComboBox更新而不完全重新分配其DataSource?
谢谢阅读.
对于我的程序,我试图创建一个函数,它将生成一个颜色数组(每次应该是相同的,所以没有随机性),其中每种颜色与其他颜色有很大不同.
你为什么要问?好吧,因为用户可以向用户控件添加自定义项目,并且通过添加每个项目,项目应该与特定颜色相关联.
显然这会很糟糕:
Red
Dark Red
Light Red
Pink
Run Code Online (Sandbox Code Playgroud)
因为在视觉上所有这些在色彩和颜色上非常相似,并且用户将无法区分它们.理想情况下,函数会产生如下所示:
Red
Dark Green
Light Cyan
Orange
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每种颜色与其他颜色大不相同,并且用户可以容易地在视觉上区分它们.
但是,我在提出一个执行此操作的算法时遇到了一些麻烦.我知道我想使用Color.FromArgb,但我不确定如何构造循环,其中每个项目与其他项目有很大不同,但每次运行该函数时都是相同的.模数运算符可能会有所帮助.我一直在使用不同的方法,但每个方法总是有一个颜色太过类似于数组中的另一种颜色.我想用循环来做这件事,但这似乎暗示了一种模式以及所有颜色之间的色调,色调或亮度的相似性.
我想我可以硬编码大量的值,但我真的不想...... = X.
好吧,如果您有任何想法,请告诉我!谢谢!!