2014-11-05 2 views
2

Я нашел фрагмент кода из аналогичного вопроса, но это не совсем соответствовало моей реализации, и я не мог понять, как адаптировать его к моей игре. У меня есть пятнадцать кнопок, и мне нужно уметь подсчитывать количество нажатых кнопок для каждого поворота игры. Я очень начинаю с ограниченным знанием программирования. Мне нужно уметь подсчитывать нажатия кнопок, а затем перезапускать метод при каждом повороте игроков.Как я могу подсчитать, сколько кнопок было нажато в моей форме окна?

private void label1_MouseClick(object sender, MouseEventArgs e) 
{ 
    int count++; 
} 

Я создал событие щелчка мыши, но я получаю сообщение об ошибке при попытке увеличения моего счета int.

+2

показать нам, что вы пробовали – qwr

+0

@qwr Я обновил; Не значит, чтобы это не было. –

+1

вы указали счет как местный. объявите его как член класса формы. это будет синтаксис work.plus: int count; count ++; – qwr

ответ

3

Используйте этот класс, то вы можете использовать ButtonEx вместо Button в вашем конструкторе

public class ButtonEx : Button 
{ 
    public int ClickCount { get; private set; } 
    public ButtonEx() 
    { 
     this.Click += (s, e) => { ++this.ClickCount; }; 
    } 

    public void ResetPressCount() 
    { 
     this.ClickCount = 0; 
    } 
} 

Я вижу, вы использовали метку вместо кнопки в вас приложении вы можете просто использовать это для этикетки

public class LabelEx : Label 
{ 
    public int ClickCount { get; private set; } 
    public LabelEx() 
    { 
     this.MouseClick += (s, e) => { ++this.ClickCount; }; 
    } 

    public void ResetPressCount() 
    { 
     this.ClickCount = 0; 
    } 
} 
+0

Просто из любопытства, что делает «(s, e)»? –

+1

'(s, e) => {// code}' - это функция, которая принимает два параметра (s и e) и делает // код, компилятор будет обнаруживать, что типы '' '' 'object' и тип 'e' is' EventArgs' – dotctor

+0

@JasonB взгляните на [Func ] (http://msdn.microsoft.com/en-us/library/bb549151 (v = vs.110) .aspx) для получения дополнительной информации о синтаксис типа '(s, e) =>' –

3

Простая установка. //all these inside form class

//declare count as integer, you can also initialize it (int count=startvalue;) 
    int count; 

    //if you want to understand read topic about delegates and events 
    private void label1_MouseClick(object sender, MouseEventArgs e) 
    { 
     ++count; 
    } 

    //call reset() when you want to reset 
    private void reset(){ 
     count=0; 
    } 

Также проверьте
stackoverflow: c# Resources, Books

+0

Это изменение сработало. Есть ли способ переписать это, чтобы сбросить счет при каждом повороте игроков? @qwr –

2

Поскольку int count++ недопустимый синтаксис.

Правильный способ создания целочисленного значения Increment равен;

private int count = 0; 
private void label1_MouseClick(object sender, MouseEventArgs e) 
{ 
    count++; 
} 

и сбросить число count вам нужно сделать кнопку сброса или включить count = 0; в вашем методе желания.

Смежные вопросы