Foxtable(狐表)用户栏目专家坐堂 → [求助]锚定的内部函数


  共有6519人关注过本帖树形打印复制链接

主题:[求助]锚定的内部函数

帅哥哟,离线,有人找我吗?
2425004926
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]锚定的内部函数  发帖心情 Post By:2022/8/27 13:40:00 [只看该作者]

老师,我动态增加控件,如果是在下方,或者右方,是要锚定的,我想写一个锚定的内部函数

比如Args(1)的值是“left|Bottom",我写下面的内部函数不行,应该怎么写?

Dim sz() As Object = Args(1).Split("|")
Dim e = Args(0)
If sz.Length = 2 Then
    Args(0).Form.Controls("").Anchor = CType(System.Windows.Forms.AnchorStyles.sz(0) Or System.Windows.Forms.AnchorStyles.sz(1), System.Windows.Forms.AnchorStyles)
ElseIf sz.Length = 3 Then
    Args(0).Form.Controls("").Anchor = CType(System.Windows.Forms.AnchorStyles.sz(0) Or System.Windows.Forms.AnchorStyles.sz(1) Or System.Windows.Forms.AnchorStyles.sz(2), System.Windows.Forms.AnchorStyles)
ElseIf sz.Length = 4 Then
    Args(0).Form.Controls("").Anchor = CType(System.Windows.Forms.AnchorStyles.sz(0) Or System.Windows.Forms.AnchorStyles.sz(1) Or System.Windows.Forms.AnchorStyles.sz(2) Or System.Windows.Forms.AnchorStyles.sz(3), System.Windows.Forms.AnchorStyles)
End if

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/8/27 13:46:00 [只看该作者]

 因为总共是9种可能,还是把9种可能罗列一遍,如果罗列代码是多了一些

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/27 14:00:00 [只看该作者]

Dim e = Args(0)
dim s as string = Args(1)
dim 控件名称 as string = Args(2)
Dim a As System.Windows.Forms.AnchorStyles
For Each ss As String In s.Split("|")
    a = a Or [Enum].Parse(GetType(System.Windows.Forms.AnchorStyles), ss)
Next
e.Form.Controls(控件名称).Anchor = a
[此贴子已经被作者于2022/8/27 16:05:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/8/27 14:34:00 [只看该作者]

调用出错了

Dim e = Args(0)
dim s as stringArgs(1)
dim 控件名称 as string = Args(2)
Dim a As System.Windows.Forms.AnchorStyles
For Each ss As String In s.Split("|")
    a = a Or [Enum].Parse(GetType(System.Windows.Forms.AnchorStyles), s)
Next
Args(0).Form.Controls(控件名称).Anchor = a

Functions.Execute("_Anchor", e, "Top|Bottom|Left|Right", "TextBox1") ‘调用出错

 回到顶部
帅哥哟,离线,有人找我吗?
SbFox
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:75 积分:517 威望:0 精华:0 注册:2021/12/11 14:20:00
  发帖心情 Post By:2022/8/27 15:32:00 [只看该作者]

a = a Or [Enum].Parse(GetType(System.Windows.Forms.AnchorStyles), ss)

 回到顶部
帅哥哟,离线,有人找我吗?
SbFox
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:75 积分:517 威望:0 精华:0 注册:2021/12/11 14:20:00
  发帖心情 Post By:2022/8/27 15:34:00 [只看该作者]

For Each ss As String In s.Split("|")
    a = a Or [Enum].Parse(GetType(System.Windows.Forms.AnchorStyles), ss)
Args(0).Form.Controls(控件名称).Anchor = a
Next

应该要这样吧


 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/8/27 16:04:00 [只看该作者]

 好了,谢谢老师!

Dim e = Args(0)
Dim s As String = Args(1)
Dim 控件名称 As String = Args(2)
Dim a As System.Windows.Forms.AnchorStyles
For Each ss As String In s.Split("|")
    a = a Or [Enum].Parse(GetType(System.Windows.Forms.AnchorStyles), ss)
Next
Args(0).Form.Controls(控件名称).Anchor = a

'Functions.Execute("_Anchor2", e, "Top|Bottom|Left|Right", "TextBox1")


我还用另一种方法写了一版
Dim e = Args(0)
Select Case Args(2)
    Case 1
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left, System.Windows.Forms.AnchorStyles) '上左
    Case 2
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '上右
    Case 3
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '下右
    Case 4
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left, System.Windows.Forms.AnchorStyles) '下左
    Case 5
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left, System.Windows.Forms.AnchorStyles) '上下左
    Case 6
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '上左右
    Case 7
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '上下右
    Case 8
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '下左右
    Case 9
        Args(0).Form.Controls(Args(1)).Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles) '上下左右
End Select

'数字顺序是由左到下顺时针旋转
'Functions.Execute("_Anchor", e, 控件名称, 控件位置)
'Functions.Execute("_Anchor", e, "TextBox1", 3)


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/8/27 16:10:00 [只看该作者]

啊,如果是数字,更简单了,一行代码搞定。不过话说回来,就这么一行代码还需要函数吗

Args(0).Form.Controls(Args(1)).Anchor = Args(2)

 回到顶部