以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何标识已选定的控件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84535)

--  作者:凡夫俗子
--  发布时间:2016/5/4 17:13:00
--  如何标识已选定的控件
就是如何做像官方的功能一样

按CTRL 单击增加一个选择控件时,该控件周围出现 8 个 控件点,前面的都是空心的,后面一个是实心的

--  作者:大红袍
--  发布时间:2016/5/4 19:03:00
--  

 麻烦,很麻烦,你还不如直接修改其背景颜色。

 

 如果要那样做,你就把控件放在一个容器里面,然后控制容器的样式。


--  作者:凡夫俗子
--  发布时间:2016/5/4 19:11:00
--  
修改其背景颜色 复原也是个问题
--  作者:大红袍
--  发布时间:2016/5/4 19:35:00
--  
以下是引用凡夫俗子在2016/5/4 19:11:00的发言:
修改其背景颜色 复原也是个问题

 

那你就最好把控件放在容器里,修改容器的样式。


--  作者:凡夫俗子
--  发布时间:2016/5/4 19:56:00
--  
好吧背景色的问题 可以不管她

那么如果 有 
ctls(4) 总共有5个控件

ctls(0).top = 500
ctls(1).top = 200
ctls(2).top =300
ctls(3).top =100
ctls(4).top = 400

如何对这五个控件进行竖直等距 处理

--  作者:大红袍
--  发布时间:2016/5/4 20:11:00
--  

取最大值,取最小值,相减500-100=400,然后400/(5-1)=100

 

然后设置 100, 100+100*1,100+100*2, 100+100*3,100+100*4


--  作者:凡夫俗子
--  发布时间:2016/5/4 20:17:00
--  
这个谢谢
我想问题的关键点在于,先要对集合 内的控件 按对应的TOP值,进行排序,然后才能进行这个操作的吧

--  作者:大红袍
--  发布时间:2016/5/4 21:26:00
--  

Dim ctls() As WinForm.Control = {e.Form.Controls("Button1"),e.Form.Controls("Button2"),e.Form.Controls("Button3"),e.Form.Controls("Button4"),e.Form.Controls("Button5")}
Dim i As Integer, j As Integer
For i = 0 To ctls.length - 1
    For j = i + 1 To ctls.length -1
        If ctls(i).top > ctls(j).top Then
            Dim temp = ctls(i)
            ctls(i) = ctls(j)
            ctls(j) = temp
        End If
    Next j
Next i
Dim c As Integer = (ctls(ctls.Length-1).top - ctls(0).top) / (ctls.length-1)
For i = 0 To ctls.length-1
    ctls(i).top = ctls(0).top + i * c
Next