注:

1.此类属于非常用类,只因本人需要编写的...顺便刷贴一下

2.对于初学,其中的枚举使用可以为你加深一点印象

以下为操作类代码:

    public class AchCtrer
{
#region /// <summary>
/// 1010
/// </summary>
static string defTdlr = Ach.defSigs;
int sigCnt, defSigCnt = 2; char chr;
int len, cnt, idx;
bool[] ctrTdlrS = new bool[] { true, false, true, false };
Button tdlr;
List<Button> tdlrL;
Color defClrb, tdlrClrb = Color.Gray;
bool bol; /// <summary>
/// 输出:1010
/// </summary>
public string IOutAchSigs = "";
/// <summary>
/// AnchorStyles.Top | AnchorStyles.Left
/// </summary>
AnchorStyles achStls; #endregion #region Control achCtr;
public Control IGetAchCtr
{
set
{
achCtr = value;
achStls = achCtr.Anchor; if (achStls != Ach.TL)
Sigs(achStls, out IOutAchSigs, out sigCnt);
else
{
IOutAchSigs = defTdlr;
sigCnt = defSigCnt;
} if (sigCnt > 0)
IniTdlrCtr();
else
achStls -= AnchorStyles.None;
}
}
private void IniTdlrCtr()
{
cnt = IOutAchSigs.Length;
for (int i = 0; i < cnt; i++)
{
#region chr = IOutAchSigs[i];
tdlr = tdlrL[i]; if (chr == '0')
{
ctrTdlrS[i] = false;
tdlr.FlatStyle = FlatStyle.Standard;
tdlr.BackColor = defClrb;
}
else
{
ctrTdlrS[i] = true;
tdlr.FlatStyle = FlatStyle.Popup;
tdlr.BackColor = tdlrClrb;
} #endregion
}
}
/// <summary>
///
/// </summary>
/// <param name="tdlrS">Ancher 属性操作按钮 [共4个'方向键']</param>
public AchCtrer22(Button[] tblrS)
{
tdlrL = new List<Button>(tblrS);
Ini();
}
public AchCtrer22(Button b_top,Button b_bottom,Button b_left,Button b_right)
{
tdlrL = new List<Button>();
tdlrL.Add(b_top);
tdlrL.Add(b_bottom);
tdlrL.Add(b_left);
tdlrL.Add(b_right); Ini();
}
private void Ini()
{
IniPar();
IniEvt();
}
private void IniPar()
{
tdlr = new Button();
defClrb = tdlr.BackColor;
}
private void IniEvt()
{
#region len = tdlrL.Count;
for (int i = 0; i < len; i++)
{
tdlr = tdlrL[i];
tdlr.BackColor = defClrb;
tdlr.FlatStyle = FlatStyle.Standard; tdlr.Click += tdlr_Click;
} #endregion
}
private void tdlr_Click(object s, EventArgs e)
{
tdlr = s as Button;
idx = tdlrL.IndexOf(tdlr); #region if (tdlr.FlatStyle == FlatStyle.Popup)
{
tdlr.FlatStyle = FlatStyle.Standard;
tdlr.BackColor = defClrb;
ctrTdlrS[idx] = false; achStls -= Ach.stlS[idx];
sigCnt--;
}
else
{
tdlr.FlatStyle = FlatStyle.Popup;
tdlr.BackColor = tdlrClrb;
ctrTdlrS[idx] = true; achStls |= Ach.stlS[idx];
sigCnt++;
} #endregion TdlrS();
}
private void TdlrS()
{
#region if (sigCnt > 0)
{
IOutAchSigs = "";
for (int i = 0; i < cnt; i++)
{
bol = ctrTdlrS[i];
if (bol)
IOutAchSigs += '1';
else
IOutAchSigs += '0';
} if (achStls == Ach.TL)
IOutAchSigs = "";
}
else
{
achStls = AnchorStyles.None;
IOutAchSigs = "-1";// defTdlr;
} achCtr.Anchor = achStls; #endregion
} #endregion
}

以下为操作类关联函数代码:

/// <summary>
/// 输出: 控件 Anchor 上下左右 01 表示标识,如:上左=1010 , None="-1",默认为:空;
/// </summary>
/// <param name="achStl"></param>
/// <param name="sigs"></param>
/// <param name="sigCnt">有多少个 sig </param>
public static void Sigs(AnchorStyles achStl, out string sigs, out int sigCnt)
{
string achs = achStl + "";
achs = achs.Replace(" ", ""); sigCnt = 0;
sigs = "-1";
if (achs == N)
return; string[] achS = achs.Split(c.d);
List<string> achL = new List<string>(achS); int cnt = namL.Count, idx;
string ach;
sigs = "";
for (int i = 0; i < cnt; i++)
{
ach = namL[i];
idx = achL.IndexOf(ach);
if (idx < 0)
sigs += '0';
else
{
sigs += '1';
sigCnt++;
}
}
return;
}

使用方法:

1.初始化:Achctrer ctrer=new Achctrer(四点个[方向顺序:上下左右]控件);

2.参数属性说明:

a.IGetAchChtr:此属性用于获取你要操作 Anchor 属性的控件

b.IOutAchSigs:此参数作为输出参数,其输出值为 Anchor 标识[此标识为本人自定义],例:-1=None,""=默认,1010=上左

交流 QQ : 2412366909@qq.com

手机号码:177-7499-4428

注:本人使用过程中暂未发现造成存取不正确的问题

C# 动态操作 控件位置绑定 [ Anchor ] 属性的更多相关文章

  1. android 动态改变控件位置和大小 .

    动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px:             ImageView.setPadding( ImageVie ...

  2. (WPF) MVVM: 动态添加控件及绑定。

    比如需要显示一个键盘,里面有各个按键.实现的效果如下: 之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定. 这种实现方法并不是真正的M ...

  3. VC++ 两种动态调整控件位置的方法(CButton设置为Radio形式会出现错误)

    ((CButton*)GetDlgItem(IDC_CHECK1))->MoveWindow(, cy - , , ); ((CButton*)GetDlgItem(IDC_CHECK2))-& ...

  4. WPF中PasswordBox控件无法绑定Password属性解决办法

    在WPF中,默认的Password控件的Password属性是不允许为之绑定的,下面是一个解决绑定Password的方法的代码: 1.前台代码 <Window x:Class="Pas ...

  5. 实现对DataGird控件的绑定操作

    //实现对DataGird控件的绑定操作 function InitGrid(queryData) { $('#grid').datagrid({ //定位到Table标签,Table标签的ID是gr ...

  6. uGUI动态加载控件位置错误

    最近在使用uGUI时遇到了一个问题,在此记录一下.在Canvas的Render Mode设置为Screen Space-Overlay模式时,动态加载控件是不会发生问题的.但是在Screen Spac ...

  7. uGUI动态加载控件位置错误(转自:https://www.cnblogs.com/mezero/p/4542939.html)

    最近在使用uGUI时遇到了一个问题,在此记录一下.在Canvas的Render Mode设置为Screen Space-Overlay模式时,动态加载控件是不会发生问题的.但是在Screen Spac ...

  8. 在Bootstrap开发框架中使用dataTable直接录入表格行数据(2)--- 控件数据源绑定

    在前面随笔<在Bootstrap开发框架中使用dataTable直接录入表格行数据>中介绍了在Web页面中使用Jquery DataTable插件进行对数据直接录入操作,这种处理能够给用户 ...

  9. winform导入导出excel,后台动态添加控件

    思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...

  10. Jquery 动态追加控件并获取值

    先展示通过动态添加控件的结果: 实现步骤: 1.引用js文件 <script src="Script/jquery-1.5.1.min.js" type="text ...

随机推荐

  1. Unity通用渲染管线Shader日志输出工具

    https://blog.uwa4d.com/archives/USparkle_Shaderlog.html

  2. rn项目下载@ant-design/react-native时发生冲突

    rn项目,使用npm i @ant-design/react-native下载antd. 下载依赖时报错: 如果你也遇到这个问题,直接告诉你结论,那就是最新的@ant-design/react-nat ...

  3. PHP统计在线用户数量

    一段经典的php统计在线用户数量的代码,一起学习分享. <?php /**  * Created by PhpStorm.  * User: jifei  * Date: 15/11/24  * ...

  4. CSS兄弟范围选择器

    我们想要选择一部分兄弟元素,根据需要试着写了一个  td:nth-child(4)~td:not(:nth-child(7)~td) {        display: none;  } 从第5个元素 ...

  5. 剪裁正方形图片cropper

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  6. Mysql 非幂等性

    幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的影响相同. -- 幂等性在分布式高并发中很常见,如不能重复点赞.电商订单库存数要一致等. MySQL解决非幂等性常用方法: 1.乐观锁 ...

  7. iOS开发之UIImage压缩处理

    IOS中UIImage的数据量压缩有两种方式,一种是图片尺寸不变,降低图片分辨率,代码方法为: //1.0为压缩系数,介于0~1之间.压缩系数越小,会大大降低图片清晰度 NSData *data = ...

  8. ES语法(简)

    1.上编写到怎样安装部署elk,这篇记录怎样简单使用.以便于后期复习使用. 2.登录localhost:5601进入开发者模式. 3.初学担心没有数据可以自己PUT数据比较直观的学习语法.这里可以用网 ...

  9. Leetcode48 旋转图像

    48. 旋转图像 难度中等432 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵 ...

  10. 6. Python 模块

    模块其实就是一个python文件 python导入模块的顺序 1. 从当前目录下找需要导入的python文件 2. 从python的环境变量中找 sys.path 当前目录和sys.path中都有im ...