注:
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
}
以下为操作类关联函数代码:
///
///
///
/// 有多少个 sig
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
注:本人使用过程中暂未发现造成存取不正确的问题
手机扫一扫
移动阅读更方便
你可能感兴趣的文章