C# 查找发件人

2024-02-14

private void buttonCheck(object sender, EventArgs e)
{
   Type x = sender.GetType();
   var y = Activator.CreateInstance(x); //sends me back to the original problem : sender is an object, not a usable object.

   var x = (Button)sender;  // == button, but you never know what sender is until it's already in this function... so 
   dynamic z = sender; //gives you the image of sender i'm looking for, but it's at runtime, so no intellisense/actual compiletime knowledge of what sender is.
}

在事先不知道发送者实际引入此方法的类的情况下,如何创建发送者的可用实例?


在绝大多数情况下you知道哪些控件将触发该事件,因为you(程序员)把它们连接起来。例如,如果您将此事件连接到一个按钮(甚至多个按钮),您就知道发送者是Button所以你可以直接投射:

var b = sender as Button;

or

var b = (Button)sender;

任何一个都会给你完整的智能感知。

如果您将此事件连接到multiple控件类型,最好的办法是检查每种可能的类型:

if(sender is Button)
//  cast to Button
else if (sender is TextBox)
//  cast to TextBox
else is (sender is CobmoBox)
//  cast to ComboBox

这可能看起来很混乱,但因为你还没有说出你真正想要的do在事件处理程序中这是最干净的方式在一次事件中处理多种可能的发件人类型。

另一种选择是仅创建多个事件处理程序(每种类型一个)并将它们连接到各自的类型。我想不出有多少代码重用场景Button and a TextBox.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 查找发件人 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • SQL注入保护-单引号[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中防止 SQL 注入的最佳方法 https stackoverflow com questions 60174 best way to prevent sql injection in php
  • 来自电子邮件的 Google 帐户图片

    是否可以像 Gravatar 图像一样检索 Google 帐户个人资料图像 我认为 如果找不到头像 故障转移到 Google 图像会非常方便 如果您能够获取 Google user id 则可以检索 Google 图片 https stac
  • WebApi 异步与同步

    我是 Net WebApi 的新手 因为我知道使用异步 API 而不是同步 API 更好 但有什么区别呢 如果 API 是同步的并且已从客户端调用 并且从另一个客户端调用 正如我所检查的 不会发生中断 并且两个调用将同时进行 那么 将其设为
  • “utf-8”编解码器无法解码位置 4 中的字节 0xe9:数据意外结束

    我对这种语言很陌生 在通过 python 发送电子邮件时遇到了一些麻烦 我的代码如下所示 import smtplib server smtplib SMTP smtp gmail com 587 server starttls serve
  • 连接到远程 IPython 实例

    我想在一台机器上运行 IPython 实例 并从不同的进程连接到它 通过 LAN 以运行一些 python 命令 我知道 zmq 是可能的 http ipython org ipython doc dev development ipyth
  • 信号量简单示例[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 谁能分享使用信号量的简单示例吗 如果
  • Type 对象属性的 TypeConverter

    我需要在属性网格中正确显示对象 我的班级看起来像这样 public class PropertyItem public PropertyDescription PropertyDescription get set Description
  • 如何在打字稿中使用枚举作为索引键类型?

    考虑下面的例子 enum DialogType Options Help class Dialog test string return class Greeter openDialogs key in DialogType Dialog
  • 如何编辑 mp3 文件详细信息 (Delphi)

    我如何使用 delphi 编辑 mp3 文件详细信息 例如描述 标题 副标题 评级 艺术家 有什么组件可以做到这一点吗 谢谢 您也许不仅可以操作 ID3V1 还可以操作 ID3V2 所以 这个库可以帮助你 http www 3delite
  • JSON 对象被 Javascript 重新排序

    我有一个通过 PHP 生成的相当大的 JSON 对象 它从数据库中创建一个 PHP 对象 其键为整数 即 1 100 但这些键并不是按这个顺序排列的 它们是随机排列的 例如 55 72 5 8 14 32 64 等 然后我使用 json e
  • 如何在Java中重写数组的equals?

    我希望覆盖 int 数组的 equals 使得以下内容为真 int a 1 2 3 int b 1 2 3 System out println a equals b 有没有办法做到这一点 覆盖equals的方法int 既不可能 也没有必要
  • 在 Visual Studio 2012 中将新的异步/等待模式与 Windows 窗体设计器结合使用

    我正在尝试在 Visual Studio 2012 中使用新的 Async Await 模式实现异步调用 当我设置表单 使用表单设计器 然后尝试使用异步方法作为事件处理程序时 编译器会抱怨函数不返回 void 该方法应该返回一个任务 这就是
  • 在Python中合并具有不同文件名的CSV文件[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对Python真的很陌生 所以这个问题可能有点基础 我有 44 个 csv 文件 它们具有相同的标题和不同的文件名 我想将它们全部合并到
  • 只从 URL 中获取域名?

    我正在尝试从 URL 字符串中提取域名 我几乎拥有它 我正在使用 URI 我有一个字符串 我的第一个想法是使用 Regex 但后来我决定使用 URI 类 我需要将上面的内容转换为 google com 和 google 而不带 www 我做
  • Flutter:定义自定义 TextStyles 以在整个应用程序中使用

    如何定义一小组自定义文本样式 然后可以在我的应用程序中重复使用它们 自定义文本样式应基于主题中定义的文本样式 我知道如何创建单独的 TextStyles 例如 Theme of context textTheme title copyWit
  • C++ 标准在哪里描述了指向原语的指针的转换?

    在优秀的博客文章中每个程序员都应该了解关于未定义行为的知识 http blog llvm org 2011 05 what every c programmer should know html 违反类型规则 部分说 将 int 转换为 f
  • Laravel PHPUnit 返回 404

    对于 Laravel API 我已经编写了测试用例 但每当我运行测试用例时 它总是失败并出现以下错误 1 Tests Feature CompanyTest orgTest Expected status code 200 but rece
  • Windows 上 R 包的 Conda 构建本地安装包

    我正在尝试在 Windows 上的 Conda 中构建自定义 R 包 源是本地 github 存储库 因为远程存储库是私有的 一切似乎都很顺利 但包最终大小为 9kb 并在构建时安装在本地计算机上 也就是说 上传到 Anaconda org
  • lambda 参数解包错误

    在 Python 2 中 这段代码没问题 f lambda m k m k m 1 2 3 4 k 5 6 7 8 print map f zip m k 但在Python 3中出现了以下错误 f lambda m k m k Syntax
  • C# 查找发件人

    private void buttonCheck object sender EventArgs e Type x sender GetType var y Activator CreateInstance x sends me back