winforms (TextBox)sender vs textBox1

e5njpo68  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(112)

假设我有一个事件处理程序来验证在TextBox控件中输入的文本。

  • 我应该转换sender参数吗?
((TextBox)sender).Text
  • 或者直接进入控制?
textBox1.text
khbbv19g

khbbv19g1#

  • 从类型安全的Angular 来看,强制转换sender是不好的,因为您无法在编译时保证sender是预期的类型。
  • 在大多数情况下,引用外部变量是一种可行的解决方案,但当使用本地函数或lambda表达式订阅时,它可能会导致不必要的闭包:
public Class1
{
    public Class1(string argument)
    {
        // This is a closure!
        MyEvent += (s, e) => Console.WriteLine(argument)
    }
}

所以这里没有一个放之四海而皆准的解决方案。这取决于你要解决的问题。
一个明确的解决方案是让API使用类型安全的事件处理程序模式(请参阅question),这样您就可以为发送方获得正确的类型。

bttbmeg0

bttbmeg02#

我总是直接访问控件

if(textbox1.text==string.Empty)
{//doSomething;}

相关问题