[英]Adding custom properties to a button control c#
目前我正在構建一個象棋游戲,大概已經完成了75%,這是零計划的一時沖動,因此非常混亂。
我有三個多維數組,一個包含一個枚舉Colour
,另一個包含一個ChessPiece
枚舉,最后一個包含坐標。
我想清理一下,有兩件事情我可以想到。
1)面向對象的編程。 我可以用屬性Colour,Coordinates和Piece建立一個類,然后在游戲開始時實例化每個片段,並引用每個實例。
2)一種更簡單的方法是,如果我可以向按鈕控件添加屬性,類似於類的屬性。 即button1.Piece = Pawn
,其中button1指的是實際按鈕。
有沒有辦法做到這一點? 謝謝。
它可能很簡單:
public class ChessButton : Button
{
public ChessPiece { get; set; }
}
顯然,您需要擴展ChessButton
(可怕的名稱)來執行您想要的操作。
好吧,如果您采用第一種方法(在oo范式中進行操作),我可以想象您可以想到一個非常簡潔的模型。 我可以設想一個基類Piece,它可以由Prawn,Rook,Bishop等類繼承,它們可能會實現移動該塊的“規則”。 類似地,我可以想象一個Tile類和另一個名為Board的類(包含2-D Tiles數組)。 等等等
因此,您最終可以將其想象為非常整潔/漂亮。 您必須考慮所有這些類,弄清它們的作用以及它們與其他類的交互方式。 因此,其中包含設計元素,這是一個潛在的弊端-必須進行前瞻性思考,而無任何實質性收益-您幾乎要為應用程序搭建一個基礎設施。他們希望他們能夠很容易地弄清楚正在發生的事情。 因此其可維護性。 OO方法的最大好處是。
您的第二種方法(擴展ui類)。 好吧,正如您所說,這似乎容易得多。 也許,如果該應用程序足夠簡單,那就可以了。
但是您還說,到目前為止,您是臨時完成的,這非常混亂。 而且您所遇到的是ui開發的典型-當您使用非結構化的方法構建事物時,事情會變得混亂。 多年來,人們花費了大量時間和金錢來嘗試將結構添加到前端以嘗試增加可維護性。 您用c#標記了這個問題,所以也許您聽說過Microsofty之類的東西,例如MVC,MVVM或MVP。 您不一定需要去詳細研究這些方法,您只需要了解它們的存在-嘗試對UI代碼進行划分以使其更易於管理。
既然您還說過這里的動機之一就是清理代碼,所以我敦促您將一些思想放入結構化方法中,而不是默認情況下走“容易得多”的道路。
如果您考慮它並決定只擴展一個Button,那很好。 之所以選擇結構化方法,是因為結構化方法將需要更多的精力。 但是至少您考慮過了。 將來,您將遇到更加復雜的ui要求,而這種前瞻性想法將使您受益匪淺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.