c# - WinForms:动态添加/删除AnchorStyles到/控制
问题描述
我目前正在开发一个编辑器,它可以让用户设计自己的 WinForm 覆盖,至少在某个点上。因此,我希望用户决定当前选定的 Control 应该具有哪些 AnchorStyles。我希望它由复选框处理。这是我的想法:
如您所见,用户当前选择了一个动态添加的面板,称为 Grid。由右侧的 CheckBoxes 处理,他现在应该能够设置选定的 Controls AnchorStyles。这是我的问题:我似乎找不到可用的解决方案,将特定的 AnchorStyle 动态添加到现有的 AnchorStyle 中,或者相反,删除 AnchorStyle,但保留其他 AnchorStyle。
我试图让它与...一起工作
SelectedControl.Anchor += AnchorStyles.Top;
这根本不起作用。所以我想到了这个...
SelectedControl.Anchor = SelectedControl.Anchor | AnchorStyles.Top
我想它可以工作,但我什至没有测试过,因为我不知道如何删除那些未选中的 AnchorStyle。建造一个巨大的if(){} else if(){}...
似乎不是一个好主意:)
我愿意接受任何想法/解决方案。提前致谢!
解决方案
top
假设您有四个名为、和的复选框控件bottom
,您可以使用单一方法处理它们的事件,并根据控件的选中值设置所需控件的锚点。例如:left
right
CheckedChange
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
var values = new[] { top.Checked, bottom.Checked, left.Checked, right.Checked };
byte[] data = new byte[1];
new BitArray(values).CopyTo(data, 0);
selectedControl.Anchor = (AnchorStyles)data[0];
}
注意: AnchorStyles
是一个标志枚举,top=1、bottom=2、left=4 和 right=8。使用上面的代码,我混合了这些标志来创建AnchorStyles
并分配给Anchor
控件的属性。
推荐阅读
- spring - 缺少工件 oracle:ojdbc6:jar:11.2.0.3
- ruby-on-rails - 无法使用 rails 在 soundex() postgres 中传递变量
- python-3.x - 打包 Python Flask-电子应用
- php - PhalconPHP 安装未定义符号:compiler_globals
- ios - iOS 应用程序大小:无线与 wi-fi
- elasticsearch - Elasticsearch 仅针对特定查询提升特定结果
- java - 无法使用 selenium web 驱动程序单击纸张按钮
- mongodb - Mongoose 按字段分组和分组结果应存储为 groupname: object
- java - 从图库中旋转图像位图
- r - R在data.table中创建嵌套滚动列表