繁体   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