2011-09-25 22 views
0

荫发出点击游戏的操作数,但有一个错误我不能正常工作。 错误是: 操作“ - ”不能应用于类型“字符串”和“廉政”
在私人无效timer1.tick的操作数。 我一直在寻找谷歌和本网站,但没有设法找到可比较的错误。我试过了较长的减号和短的减号。点击游戏 - 操作员“ - ”不能应用于类型“字符串”和“廉政”错误

(在Visual C#2010明示制造)

public partial class Form1 : Form 
{ 
    int timeLeft; 
    int counter = 10; 



    public Form1() 
    { 
     InitializeComponent(); 
    } 


    private void timer1_Tick(object sender, EventArgs e) 
    { 
      timer1.Interval = 1000; 
      timeLabel.Text = timeLabel.Text - 1; 




     { 
      if (timeLeft > 0) 
      { 
       timeLeft--; 
       timeLabel.Text = timeLeft + " seconds"; 
      } 
      else 
      { 
       timer1.Stop(); 
       timeLabel.Text = "Score"; 

       MessageBox.Show(Score.Text, "Score"); 

       Plus.Enabled = false; 
      } 
     } 
    } 

    private void Plus_Click(object sender, EventArgs e) 
    { 
     timer1.Start(); 
     Score.Text = Score.Text + 1; 
     Score.Text = counter.ToString(); 
    } 



} 

回答

3

Score.Textstring;你不能从一个字符串中减去一个数字。您必须先将字符串转换为数字,然后才能对其进行数学运算。

注意Score.Text + 1不会做数学; +运算符连接字符串,而不是算术。

3

我的建议 - 不要使用timeLabel存储“真相”大约剩余时间。

相反,这样做:

timeLeft--; 
if (timeLeft > 0) 
{ 
    timeLabel.Text = timeLeft + " seconds"; 
} 
else 
{ 
    timer1.Stop(); 
    timeLabel.Text = "Score"); 
} 

错误是告诉你,有没有操作符 - 接受一个int有 - 本质上,无论操作符 - 装置类,在这种情况下字符串,它不不知道如何处理整数参数。

再次,不要那样做。你已经有了整数值。该timeLabel呈现东西,timeLeft int是一个业务逻辑件。让timeLabel做它最擅长的功能 - 向用户显示文本 - 并让整数字段timeLeft管理新的秒数值应该是什么。

与您的分数文本相同的东西。这里混合了演示文稿和业务逻辑。只是让你的分数的int,然后做一些事情,如:

Score.Text = currentScore.ToString(); 

顺便说一句,在Plus_Click的Score.Text线可能不会像您所期望的工作。我假设Score是一个文本框或类似的东西。它不会显示任何Score.Text + 1,因为它将被counter.ToString()覆盖。不要试图在这里击败你,只是指出它。

1
timeLabel.Text = Int32.Parse(timeLabel.Text) - 1; 

同样在其他地方。 HTH。

相关问题