我正在構建一個函數來減少18個按鈕的相同代碼。'object'不包含'value'
下面是代碼:
void hexagon_Click(object sender, ActionEventArgs e)
{
count++;
this.Dispatcher.Invoke((Action)(() =>
{
sender.RectOne.Fill = sender.Brush;
sender.RectTwo.Fill = sender.Brush;
sender.RectThree.Fill = sender.Brush;
}));
if (count == 1)
{
kliknatopole = sender;
}
else if (count == 2)
{
if (kliknatopole == sender)
{
return;
}
else
{
if (kliknatopole.Brush == sender.brush)
{
levelUpControUI(level);
prepareForNextLevel();
nextLevel1();
count = 0;
sender.Enabled = false;
kliknatopole.Enabled = false;
}
else
{
this.Dispatcher.Invoke((Action)(() =>
{
sender.RectOne.Fill = sender.Brush;
sender.RectTwo.Fill = sender.Brush;
sender.RectThree.Fill = sender.Brush;
}));
Thread.Sleep(500);
this.Dispatcher.Invoke((Action)(() =>
{
sender.RectOne.Fill = Brushes.Transparent;
sender.RectTwo.Fill = Brushes.Transparent;
sender.RectThree.Fill = Brushes.Transparent;
kliknatopole.RectOne.Fill = Brushes.Transparent;
kliknatopole.RectTwo.Fill = Brushes.Transparent;
kliknatopole.RectThree.Fill = Brushes.Transparent;
}));
toLevelOne();
count = 0;
}
}
}
}
現在我也不知道爲什麼,但kliknatopole
這是一個private object
和sender
不能從類HexagonControl
訪問的價值觀,那就是:
public partial class HexagonControl : UserControl
{
public BaseControlLogic controlLogic { get; set; }
public HexagonControl()
{
InitializeComponent();
controlLogic = new BaseControlLogic();
}
public Rectangle RectOne { get { return rectOne; } }
public Rectangle RectTwo { get { return rectTwo; } }
public Rectangle RectThree { get { return rectThree; } }
public Brush Brush { set; get; }
}
對於RectOne,Two and Three
,也Brush
,我得到這個錯誤:
'object' does not contain a definition for 'RectOne' and no extension method 'RectOne' accepting a first argument of of type 'object' could be found
我把HexagonControl
公開,但這並沒有解決它。我還試圖建立一個object
和傳遞sender
值,但仍然didnt修復它,它只是給了我這個Cannot implicitly convert type 'object' to 'LongName.HexagonControl'. An explicit conversion exists
什麼可能會造成這個錯誤,我怎麼能解決這個問題。
你必須將'sender'轉換爲其原始類型 –
@FlatEric這應該是一個答案而不是評論 – Ermiar
在我的情況下,該怎麼做。我是新來的C#,對不起 –