我正在创建一个搜索栏来搜索列表。我有一个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);
答案 0 :(得分: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;
}
}
}