簡體   English   中英

通過ContextMenuStrip使TextBox可編輯-C#WinForm

[英]Make TextBox Editable by ContextMenuStrip - c# winform

我的C#Winform中有一個文本框。 程序默認為文本框分配一個值。

我希望用戶具有右鍵單擊功能以在運行時編輯此文本。 因此,當用戶右鍵單擊進行編輯時,背景應該變成白色,並且用戶應該能夠編輯文本。 在編輯后,背景應恢復為默認且不可編輯

我創建了一個帶有右鍵單擊事件的ContextMenuStrip,以按如下所示編輯文本,並在用戶右鍵單擊並按編輯菜單項時將readonly屬性分配為false:

private void editTextToolStripMenuItem_Click(object sender, EventArgs e)
{
    itxt_CommonTitle.ReadOnly = false;
}

我不確定如何進一步進行。 使用文本框可以嗎?

我認為您缺少流程。 編輯后,應該有一個更新或保存方法。

  1. 文本框readonly = true;
  2. 編輯文本框:textbox readonly = false;
  3. 保存按鈕:文本框readonyl = true;

編輯:像這樣:

    private void buttonSave_Click(object sender, EventArgs e)
    {
        textBox1.ReadOnly = true;
    }

    private void editToolStripMenuItem_Click(object sender, EventArgs e)
    {
        textBox1.ReadOnly = false;
    }

您無需更改backColor,只需readread屬性就可以。

如果尚未在設計器中更改TextBoxBackColor ,則在您將ReadOnly = true設置為背景時,背景顏色應自動從白色變為灰色,而在您將ReadOnly = false設置為從灰色重新變為白色。 但是,如果您在設計器中將其更改為其他設置,那么最簡單的方法就是設置一個私有變量以在啟用控件進行編輯之前記住原始的BackColor 然后,您可以將顏色設置回只讀,然后將其還原。

private void editToolStripMenuItem_Click(object sender, EventArgs e)
{
    MakeTextBoxEditable(itxt_CommonTitle);
}

private void itxt_CommonTitle_Leave(object sender, EventArgs e)
{
    MakeTextBoxReadOnly(itxt_CommonTitle);
}

private void Form1_Click(object sender, EventArgs e)
{
    MakeTextBoxReadOnly(itxt_CommonTitle);
}


private Color origTextBoxBackColor = SystemColors.Control;

private void MakeTextBoxEditable(TextBox textBox)
{
    origTextBoxBackColor = textBox.BackColor;
    textBox.ReadOnly = false;
    textBox.BackColor = Color.White;
    textBox.Focus();
}

private void MakeTextBoxReadOnly(TextBox textBox)
{
    textBox.ReadOnly = true;
    textBox.BackColor = origTextBoxBackColor;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM