台灣最大程式設計社群網站
線上人數
882
 
會員總數:245214
討論主題:189088
歡迎您免費加入會員
討論區列表 >> VB.NET >> 如何複製Button的屬性?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何複製Button的屬性?
價值 : 100 QP  點閱數:366 回應數:9

樓主

city
初學者
130 43
1541 229
發送站內信

各位前輩們好:

假設Form1上面有個Button1物件

我現在要用程式碼寫個Button2
Dim Button2 As New Button

我想要讓Button2的屬性跟Button1一樣
(除了Name屬性可以不一樣)

要如何做到呢?

謝謝~~

搜尋相關Tags的文章: [ 複製 ] , [ Button ] , [ 屬性 ] ,
本篇文章發表於2019-02-21 11:59
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

HB
檢舉此回應
供參考,其它的屬性可參考屬性表自行加入。

本篇文章回覆於2019-02-21 12:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

city
檢舉此回應
To:HB

我指的並不是自行Key上屬性
例如:
Button2.Width=Button1.Width
Button2.Height=Button1.Height
Button2.Left=Button1.Left
Button2.Top=Button1.Top
...
...
...

以上 如果有100個屬性 就要Key100個屬性

我想要的不是自行Key屬性
而是讓Button2=Button1的複製

謝謝~~
本篇文章回覆於2019-02-21 12:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一般有幾種做法。

一種是先設定一個預設的buttion class。
然後你所有產生的buttion就new class上就好了。

一種是先copy原物件再做改名。

最後就是自已寫個function。來處理要依附的屬性。

大多數如果真的是很大量同屬性的button。會比較推第一種方式會單純很多。

但如果是有變動性的依附元件。那就最好使用2或3的方式來處理。
本篇文章回覆於2019-02-21 13:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

city
檢舉此回應
To:浩瀚星空

不知大大所說第一種方法是否:

設一個自訂類別(例如:MyButton) 然後繼承Button
自訂類別內設一個Public的自訂方法
自訂方法回傳Me.MemberwiseClone

我測試這個方法是可行的
只不過Button2的型別就不是Button 而是MyButton

==========================================

至於大大說的第2-3種方法我就看不懂了...

不知道是否有讓Button2仍然是Button的作法?

==========================================

PS.
試過用模組來擴充Button方法
可是模組似乎無法回傳Me.MemberwiseClone
而且我也不太想用模組來擴充方法...
本篇文章回覆於2019-02-21 13:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

city
檢舉此回應
To:浩瀚星空

大大所說第二種方法 是否:

在Form1上面選取Button1
先按Ctrl+C 再按Ctrl+V
這樣Form1就多了一個Button
再來改新Button的Name?

如果是這樣的話

由於我的Button2是用程式碼新增的
可能無法用這個方法

=============================

我是想用程式碼建立100個Button

Button1是我的樣本

我這100個Button的屬性要跟Button1一樣
(Name屬性可以不一樣)


目前用的方法是自己Key屬性
tempButton.Width=Button1.Width
tempButton.Height=Button1.Height
tempButton.Left=Button1.Left
tempButton.Top=Button1.Top
...
...
...
本篇文章回覆於2019-02-21 14:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

HB
檢舉此回應
'修改如下看看是否符合所需?

本篇文章回覆於2019-02-21 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

city
檢舉此回應
To:HB 6樓

我目前做法也類似如此

可是這樣有個缺點:就是程式碼已經寫死

例如6樓內容:有4個屬性(Name/Text/Width/Location)

如果之後要增加屬性 就要回來改程式碼

=======================================================
我目前想這樣做:



就是用個ButtonSample來設定屬性
如果ButtonSample設定了6個屬性
tempButton就會有6個屬性跟ButtonSample一樣

不過tempButton = ButtonSample是錯誤的

理想的狀況是:tempButton = ButtonSample.Clone

不過Button又沒有Clone的方法...
本篇文章回覆於2019-02-21 19:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

city
檢舉此回應
修正4樓錯誤:

測試了一下
利用回傳Me.MemberwiseClone
可以產生新的屬性
例如:tempButton的Width值可以跟ButtonSample的Width值不一樣
可是Form1裡面 卻只會出現一個tempButton

就算利用迴圈製造出100個tempButton
Form1裡面 還是只有一個tempButton

而tempButton的型別也不是Button 而是自訂類別

使用Me.MemberwiseClone 似乎是無解...
本篇文章回覆於2019-02-23 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

city
檢舉此回應
似乎只能自行Key上屬性了...

感謝兩位前輩提供的方法 :)
本篇文章回覆於2019-02-24 15:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.