[英]Programatically change focus for TextBox in C#
我有一個從C#中的TextBox派生的類。 我重寫OnClick方法以顯示文件打開對話框。 之后是否有可能失去焦點? 我不希望用戶能夠編輯文本,因為此文件名可能暫時無效。 我嘗試將ReadOnly設置為true,但是選擇文件后可以更改文本。
編輯:
我為此添加了相關代碼。 現在,焦點將從我的窗體設置為下一個控件。
class Property : TextBox
class FileSelectTextBox : Property
{
protected override void OnClick(EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
Enabled = false;
if (dialog.ShowDialog(this) == DialogResult.OK)
{
Text = dialog.FileName;
}
Enabled = true;
}
}
您在這里有幾種選擇:
ReadOnly
。 該文本框仍會觸發OnClick
事件,但用戶無法編輯該文本。 someOtherTextBox.Focus()
) 編輯:上一次建議:您可能希望文件彈出發生在 FocusGained
而不是OnClick
,這樣,如果用戶將其切換到控件中,對話框仍然會彈出。當然,是否需要這種行為是您的決定。
編輯2:忽略最后的編輯。 我沒有認真考慮過,這是一個不好的建議。 (感謝單挑評論者)
設置文本框的ReadOnly = true
屬性(不要在任何時間更改它),它應該可以單獨工作。
其余的代碼是這樣的..
protected override void OnClick(EventArgs e)
OpenFileDialog dialog = new OpenFileDialog();
//user can still change/edit some non-existing file/path and click OK, so set the followings
dialog.CheckFileExists = true;
dialog.CheckPathExists = true;
if (dialog.ShowDialog(this) == DialogResult.OK)
{
Text= dialog.FileName;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.