我在silverlight / c#中编写的应用程序由13个永久按钮组成,点击时可以执行简单的导航到另一个页面。
问题是我的代码背后有13个不同的事件处理程序(很多代码),几乎完全相同。
有没有办法检测哪个按钮被按下以便单个事件处理程序被触发,而一个简单的if语句可以确定要转到哪个页面?
答案 0 :(得分:4)
是:您可以对所有按钮使用相同的方法,并使用参数“sender”作为“sender.Name”来获取按下按钮的名称。
答案 1 :(得分:2)
在程序的设计器代码中,为所有13个按钮添加相同的事件处理程序(查找具有+ =的代码并为所有这些按钮设置相同的事件处理程序)。
请注意,事件处理程序有一个object(s)参数。您可以按如下方式使用此参数:
if(s.Name = "Button1") {//button 1 stuff}
else if (s.Name = "Button2") {button 2 stuff}
等。
编辑:应该是s.Name =“Button1,2,3等......”
答案 2 :(得分:1)
测试按钮点击事件处理程序的sender参数 - 您将能够测试哪个按钮是发件人。
答案 3 :(得分:0)
使用'sender'作为键使用词典。 “价值”可以是要导航到的页面。
答案 4 :(得分:0)
如果您的事件处理程序中有很多代码,您应该将其分解为单独的方法,并将按钮特定参数发送到该方法。
但是如果你看一下sender参数,你仍然可以拥有一个事件处理程序。