我想創建文本框的子類,以便可以添加我想要的行爲。我首先通過向項目添加項目,選擇常用控件並從工具箱拖動txtbox來設計視圖來嘗試視覺路線。但是,當我嘗試從工具箱「無法加載工具箱項目」將該新類拖到窗體時,這給了我錯誤。 所以我試圖在代碼中創建子類。我創建了新的cs文件ZControls以包含所有未來的子類控件,並在其中創建了新的txtbox類,並添加了一些代碼來改變用戶按Enter時的行爲。如何在表單中引用子類txtbox
class Ztextbox : TextBox
{
private void keypressed(Object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
this.SelectNextControl((Control) sender, true, true, true, true);
}
}
}
它的工作和新的Ztxtbox控件在工具箱中,我成功地將它放在窗體上。但是它沒有改變行爲,當我按Enter鍵時什麼都沒有發生。所以我想,我不能有可能是罪魁禍首代碼
TextBox tb = new TextBox();
this.Controls.Add(tb);
tb.KeyPress += new KeyPressEventHandler(keypressed);
但在這個例子中,文本框的形式類創建爲我做到了不拖,並沒有在自己的子類cs文件。 我如何得到這個工作?
好吧我得到它的工作,但不是與我的方法keypressed。我通過設計視圖完成了單擊ZtextBox並在其KeyPress事件中按Enter的過程,以便IDE爲KeyPress創建新事件,並在其中放置了我的代碼並運行。重寫KeyPressEvent的代碼被自動添加到窗體的InitializeComponent()方法中: this.txtUsername.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtUsername_KeyPress);
我試圖在上面的EventHandler中插入我的方法,但錯誤是「名稱-keypressed-在當前上下文中不存在」。 所以這不是真正的解決方案,只有解決方法。 有什麼幫助嗎?
也許,你想創建你的Ztextbox? 'TextBox tb = new Ztextbox();' –
這個文本框是由IDE自動創建的,作爲代碼行'this.txtUsername = new Projectname.Ztextbox(); 'code'在窗體的'code'InitializeComponent'code'中。雖然我得到關於顯示問題的消息「變量txtUsername要麼未聲明,要麼從未賦值」 –