0

我正在创建一个搜索栏来搜索列表。我有一个Gtk.Entry搜索查询将被输入,它intialText告诉用户在那里输入搜索查询。当用户第一次单击小部件时,我将如何删除该文本,或者是否有更好的小部件可供使用?

到目前为止我的代码:

Entry SearchText= new Entry("Search for item");
SearchText.Direction= TextDirection.Ltr;
SearchText.IsEditable= true;
SearchText.Sensitive= true;

ContentArea.PackStart(SearchText, false, false, 2);
4

1 回答 1

0

至少在我的 gtk# 版本中,条目中的文本最初是被选中的,因此当用户开始输入时,它会被自动删除。如果这对您来说还不够,例如,您可以使用清除文本,如果用户没有输入任何FocusInEvent内容,可以选择重新安装它。FocusOutEvent

public class FancyEntry : Entry
{
    private string _message;
    public FancyEntry(string message) : base(message)
    {
        _message = message;
        FocusInEvent += OnFocusIn;
        FocusOutEvent += OnFocusOut;
    }

    private void OnFocusIn(object sender, EventArgs args)
    {
        FocusInEvent -= OnFocusIn;
        this.Text = String.Empty;
    }

    private void OnFocusOut(object sender, EventArgs args)
    {
        if (String.IsNullOrEmpty(this.Text))
        {
            this.Text = _message;
            FocusInEvent += OnFocusIn;
        }
    }
}
于 2013-09-21T11:15:40.857 回答