gpt4 book ai didi

c# - 自定义组件属性具有唯一值

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:52 24 4
gpt4 key购买 nike

我通过覆盖 TextBox 组件实现了自定义控件。它有一个名为“DbColumn”的自定义属性。我希望它像 TextBox 上的“Name”属性一样工作,这是一个 Form 不能在两个控件上具有具有相同“DbColumn”值的组件。

有没有办法将属性设置为在一个表单中具有唯一值?

最佳答案

如果运行时检查对您来说足够了,请尝试实现 System.ComponentModel.ISupportInitialize 并将检查逻辑添加到 EndInit():

public class MyTextBox : TextBox, ISupportInitialize
{
...
public string DbColumn { get; set; }

public void BeginInit() { }
public void EndInit()
{
bool duplicatesFound = Parent.Controls
.OfType<MyTextBox>()
.GroupBy(mtb => mtb.DbColumn)
.Any(x => x.Count() > 1);

if (duplicatesFound)
throw InvalidOperationException("MyTextBoxes with duplicate DbColumn property found.");
}
}

这种形式的成本非常高,但可以很容易地优化为对每个父容器执行一次检查,而不是 n 次(对于 n 个 MyTextBoxes ).

关于c# - 自定义组件属性具有唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242975/

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