第一次单击时删除条目文本

问题描述

我有一个条目/文本框。我有 10 个数字按钮作为计算器。(0-1-2-3-4....)当我的页面加载有一个数字的条目时。它显示了我的起始值。(例如,当我的页面加载的条目文本已经是 10 时没有任何点击按钮)所以我想当我点击一个数字按钮时它会删除加载页面的第一个条目值,它会开始写我的按钮点击。我该怎么做?

我尝试过:

private void btn1_Clicked(object sender,EventArgs e)
entry.Text="";
entry.Text="1";

但当然它没有用,因为如果我想写 123 我不能写它总是删除。我只想删除页面加载后的第一个值。

解决方法

正如@Jason 建议的那样,使用 Placeholder 属性来显示初始值,并在点击事件中将该值附加到条目文本中:

注意:您可以有一个事件委托来处理所有按钮的点击事件:

Constructor()
{
     //set initial value here or use binding
     //entry.Placeholder = 
}

private void btn_Clicked(object sender,EventArgs e)
{
    //you can remove the initial value if you want
    //entry.Placeholder = string.Empty;
    
    string buttonText = ((Button)sender).Text;
    entry.Text = $"{entry.Text}{buttonText}";
}
,

另一种方法是在方法外添加一个布尔标志来避免这种情况。

public class MyCalculator ()
{
    private bool _isNewNumber;

    protected override void OnAppearing()
    {
        _isNewNumber = true; //whenever open the page,needs to refresh
    }

    private void btn1_Clicked(object sender,EventArgs e)
    {
        if (_isNewNumber)
        {
            entry.Text=""; //clear the number for the first time
        }

        entry.Text="1";
        _isNewNumber = false;
    }
}