我正在 C# .NET 桌面上制作數獨游戲。
數獨面板由 81 個標簽組成。我用演算法在黑板上定義了他們的號碼。
現在我想做的基本上是這樣的:
foreach(Label l in panel1.Controls.OfType<Label>())
{
if(l.MouseEnter == true)
{
l.ForeColor = Color.White;
}
}
但它不起作用。有什么解決方案嗎?抱歉,我不知道如何在 if 陳述句中使用事件。
編輯:我決定只為每個標簽一個一個地使用事件 MouseEnter。我知道 CS 8.0 應該支持在 foreach 東西中使用事件,但不確定。
uj5u.com熱心網友回復:
它不打算以這種方式使用。
您應該為每個標簽訂閱 MouseEnter 事件,您可以對所有標簽使用相同的事件處理方法,并使用 sender 屬性來了解激活的標簽。如果標簽是使用設計器創建的,您可以直接在 VS 屬性視窗中訂閱,或者您可以使用 = 運算子以編程方式進行訂閱。
請參閱https://docs.microsoft.com/en-us/dotnet/standard/events/或任何有關事件的在線教程。
uj5u.com熱心網友回復:
事件是告訴你什么時候發生的事情。他們不會告訴你某事的狀態。所以有幾個選擇
為每個標簽附加一個事件以進入/離開標簽。您可以使用相同的事件處理程式/方法來處理每個標簽的事件,并將發送者物件轉換為您的標簽并設定顏色。像這樣的東西。請注意,這應該在建構式中運行一次。
foreach(Label l in panel1.Controls.OfType<Label>())
{
l.MouseEnter = (o, e) => ((Label)o).ForeColor = Color.White;
l.MouseLeave = (o, e) => ((Label)o).ForeColor = Color.Black;
}
或者您可以使用一個回圈來檢查滑鼠游標位置并檢查它是否在每個標簽內。但是您必須運行回圈才能更改顏色,并且一直運行它會浪費 CPU 資源。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418012.html
標籤:
上一篇:將陣列中的按鈕顏色更改為剛剛在另一個陣列中按下的不同按鈕的顏色
下一篇:在二維陣列中搜索
