通过tag来判断是哪个按钮按下问题求教

qq_14995971 2016-06-16 01:23:28
有4个按钮,他们的tag分别为他给,2,3,4,四个按钮分别配有一个combobox。流程是当你点击按钮后你可以用鼠标去选择物件,然后获得物件的名字,并在对应的combobox上显示。我想知道我这个判断tag是几这一块该放在哪里呢?
 public void notifySelection(ref IvcSelection Selection, int SelectionTypeChange) //这是获得物件的名字的代码,4个按钮公用这一段。
{
if (Selection.ItemCount == 0)
{
return;
}
if (Selection.ItemCount >= 1)
{
for (int i = 0; i < Selection.ItemCount; i++)
{
comp = (IvcComponent)Selection.getItem(i);
for (int a = 0; a < comp.PropertyCount; a++)
{
object name = comp.getProperty("Name");
string propName = comp.getPropertyName(a);
object propValue = comp.getProperty(propName);
}
}
}
}
...全文
351 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
我叫小菜菜 2016-06-16
  • 打赏
  • 举报
回复
引用 6 楼 qq_14995971 的回复:
引用 4 楼 qqamoon 的回复:
这是一个方法,无法处理按钮的 Click 事件的,正确的做法是在 Click 事件中获取 Tag 然后,调用方法并传递参数
可以写一下 代码吗...一头雾水啊。。
        private void btnSetText_Click(object sender, RoutedEventArgs e)
        {
            Button btn = e.Source as Button;
            string content = btn.Tag.ToString();
            //把content 传递给通知函数
         }
把Tag作为一个object,就可以传递自定义对象了嘛,管哪个按钮触发,这不需要知道
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
引用 12 楼 qq_14995971 的回复:
notifySelection(Selection, (int)(sender as Button).Tag);这个显示Selection不存在的..这个tag还是不好判断
兄弟哎,这个方法是你自己写的,你居然跟我说 Selection 不存在,它当然不存在啦,它是个啥我都不知道! 这里是告诉你要调用 notifySelection 方法,调用这个方法需要2个参数 第一个参数名是 Selection 类型是 IvcSelection 第二个参数名是 SelectionTypeChange 类型是 int 其他的我实在不知道该说啥了
qq_14995971 2016-06-16
  • 打赏
  • 举报
回复
引用 11 楼 qqamoon 的回复:
判断 tag int type = (int)(sender as Button).Tag; if(type < 4) { 表示1-3按钮被按下 } else { 按钮4被按下 } 或者,再定义一个事件处理 将 button4 的 click 指向该事件处理 private void button4_Click(object sender, EventArgs e) { // 处理代码 }
notifySelection(Selection, (int)(sender as Button).Tag);这个显示Selection不存在的..这个tag还是不好判断
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
判断 tag int type = (int)(sender as Button).Tag; if(type < 4) { 表示1-3按钮被按下 } else { 按钮4被按下 } 或者,再定义一个事件处理 将 button4 的 click 指向该事件处理 private void button4_Click(object sender, EventArgs e) { // 处理代码 }
qq_14995971 2016-06-16
  • 打赏
  • 举报
回复
引用 9 楼 qqamoon 的回复:
4个 button 的 Click 事件处理都选择 button_Click
说错了,前3个按钮是点一下按钮然后选择东西显示名字,另一个按钮点一下按钮选一个东西显示名字,然后显示的时候是用“-》”连接,现在的问题是当你在嗯第四个按钮之前如果恩了其他三个按钮,第四个按钮的显示就会有之前其他按钮点击的名字,有干扰
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
4个 button 的 Click 事件处理都选择 button_Click
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
private void button_Click(object sender, EventArgs e) { notifySelection(Selection, (int)(sender as Button).Ta); }
qq_14995971 2016-06-16
  • 打赏
  • 举报
回复
引用 5 楼 zhi_ai_yaya 的回复:
拿到sender,直接sender as Button,就去到tag。如果不是button本身,就把数据传递。
这个判断tag的地方是写在notifySelection吗?
qq_14995971 2016-06-16
  • 打赏
  • 举报
回复
引用 4 楼 qqamoon 的回复:
这是一个方法,无法处理按钮的 Click 事件的,正确的做法是在 Click 事件中获取 Tag 然后,调用方法并传递参数
可以写一下 代码吗...一头雾水啊。。
我叫小菜菜 2016-06-16
  • 打赏
  • 举报
回复
拿到sender,直接sender as Button,就去到tag。如果不是button本身,就把数据传递。
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
这是一个方法,无法处理按钮的 Click 事件的,正确的做法是在 Click 事件中获取 Tag 然后,调用方法并传递参数
楚狂歌 2016-06-16
  • 打赏
  • 举报
回复
把notifySelection改成绑定到按钮的事件 或者在按钮事件调用notifySelection的时候把tag传进来
qq_14995971 2016-06-16
  • 打赏
  • 举报
回复
引用 1 楼 qqamoon 的回复:
如果4个按钮使用同一个事件处理,直接用 sender 进行判断 SelectionTypeChange = (sender as Button).Tag 是这个意思不?
可是sender不存在这个notifySelection中啊
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
如果4个按钮使用同一个事件处理,直接用 sender 进行判断 SelectionTypeChange = (sender as Button).Tag 是这个意思不?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧