110,539
社区成员
发帖
与我相关
我的任务
分享
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);
}
}
}
}
private void btnSetText_Click(object sender, RoutedEventArgs e)
{
Button btn = e.Source as Button;
string content = btn.Tag.ToString();
//把content 传递给通知函数
}
把Tag作为一个object,就可以传递自定义对象了嘛,管哪个按钮触发,这不需要知道notifySelection(Selection, (int)(sender as Button).Tag);这个显示Selection不存在的..这个tag还是不好判断
判断 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) { // 处理代码 }
4个 button 的 Click 事件处理都选择 button_Click
拿到sender,直接sender as Button,就去到tag。如果不是button本身,就把数据传递。
这是一个方法,无法处理按钮的 Click 事件的,正确的做法是在 Click 事件中获取 Tag 然后,调用方法并传递参数
如果4个按钮使用同一个事件处理,直接用 sender 进行判断 SelectionTypeChange = (sender as Button).Tag 是这个意思不?