Я создаю функцию для уменьшения того же кода из 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
в, но все еще не исправить, он просто дал мне это Cannot implicitly convert type 'object' to 'LongName.HexagonControl'. An explicit conversion exists
Что может быть причиной этой ошибки, и как я могу это исправить.
Вы должны отправить 'sender' в его исходный тип –
@FlatEric, это должен быть ответ, а не комментарий – Ermiar
В моем случае, как это можно сделать. Я новичок в C#, извините –