我正在构建一个函数来减少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#,对不起 –