c# - 如何创建一个变量来改变点击项目的功能?
问题描述
我在 C# WPF 代码上遇到问题:我在一个窗口上有多个彩色图像,当我单击它时,它变得模糊(这有效)。但是我的代码优化得很糟糕,我想得到一些帮助!
这是我的代码的一小部分:
private void BrownBlur(object sender, MouseButtonEventArgs e)
{
Brown.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}
private void LightGreenBlur(object sender, MouseButtonEventArgs e)
{
LightGreen.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}
窗户的每种颜色都是这样的......
我知道这可能是最糟糕的编码方式,所以我尝试了这样的事情:
private void isBlurred()
{
this.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}
但这是整个窗口变得模糊......
所以我问你们是否知道“this.BlurApply”的替代方法,或者您是否知道创建变量的方法,该变量会改变单击项目的功能!
解决方案
面向所有发件人的一项活动
private void OnBlureObjClick(object sender, MouseButtonEventArgs e)
{
UIElement obj = sender as UIElement; //other parent class or interface
obj.BlurApply(blurRadius: 15, new TimeSpan(0, 0, 1), TimeSpan.Zero);
}
然后将事件分配给您的所有对象
Brand.OnMouseButtonClik +=OnBlureObjClick;
LightGreen.OnMouseButtonClik +=OnBlureObjClick;
或者创建对象的集合,然后在 foreach 循环中添加事件
foreach(var item in collection)
{
item .OnMouseButtonClik +=OnBlureObjClick;
}
推荐阅读
- ajax - Ajax 在按钮单击后未提交表单
- java - JTable 的列中的 JPanel 中没有显示 JLabel 的工具提示
- java - webview 不打开长网址(Android Studio)
- mysql - Sequelize model.create 不是函数
- javascript - Firestore 中的数据搜索
- javascript - 如何创建带有 URL 链接的自定义选择菜单
- javascript - Node.js Discord.js 从 ID v11 向频道发送消息
- visual-studio-code - Visual Studio Code 从 HTML 标记中删除结束斜杠
- node.js - npm-check-updates (npm ncu):避免中断更新
- cypress - 在部署上运行赛普拉斯测试