更改 WPF 中的按钮内容

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15279349/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 07:57:08  来源:igfitidea点击:

Change button content in WPF

c#wpfbuttonmouseevent

提问by user1638121

I have:

我有:

private void button1_MouseEnter(object sender, EventArgs e)
{
    for (int i = 0; i > 2; i++) 
    {     
        button1.Content = Convert.ToString(i);
        System.Threading.Thread.Sleep(1000);     
    }

    tekst.Text = "Mouse Enter";
}

When I enter on ButtonI see only Mouse Enter, but Contenton Buttondon't change. Why? What I can do wrong?

当我进入上Button我只看到Mouse Enter,但ContentButton不改变。为什么?我能做错什么?

采纳答案by kmatyaszek

Your for loop never execute because you have wrong condition, change it to following code:

您的 for 循环永远不会执行,因为您的条件错误,请将其更改为以下代码:

for (int i = 0; i < 2; i++)

for (int i = 0; i < 2; i++)

Also you should use BackgroundWorker(msdn) to update your GUI dynamicly.

您还应该使用BackgroundWorker( msdn) 动态更新您的 GUI。

private void button1_MouseEnter(object sender, MouseEventArgs e)
{
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += delegate
    {
        for (int i = 0; i < 2; i++)
        {
            this.Dispatcher.Invoke((Action)(() => { btn.Content = Convert.ToString(i); }));
            System.Threading.Thread.Sleep(1000);
        }                
    };
    worker.RunWorkerCompleted += delegate { tekst.Text = "Mouse Enter"; };
    worker.RunWorkerAsync();
}

回答by yo chauhan

Hi is your for loop correct? It should be i<2 instead of i>2

嗨,你的 for 循环正确吗?它应该是 i<2 而不是 i>2

 for (int i = 0; i < 2; i++)
        {