【问题标题】:Remove Entry Text at first click在第一次单击时删除条目文本
【发布时间】:2021-04-07 05:17:34
【问题描述】:

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

我试过了:

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

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

【问题讨论】:

  • 为什么不使用 Placeholder 属性来显示起始值呢?否则,您将需要使用 bool 来跟踪这是否是第一次单击按钮

标签: c# xamarin xamarin.forms


【解决方案1】:

正如@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}";
}

【讨论】:

  • 如果它回答了您的问题,请通过accepting it✅ 告诉我,否则您可以给我留下反馈/评论。
【解决方案2】:

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

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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-19
    • 2014-12-17
    • 2012-08-20
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多