C#Programmatic created按钮 - 启用以编程方式创建的文本框

时间:2017-12-07 19:06:33

标签: c# database winforms

希望你能提供帮助 - 我已经以编程方式创建了按钮& RichTextBox的。

// Button to Edit
Button butEditToDo = new Button();
butEditToDo.Location = new Point(285, 10);
butEditToDo.Size = new System.Drawing.Size(25, 25);
butEditToDo.BackColor = Color.Transparent;
butEditToDo.FlatStyle = FlatStyle.Flat;
butEditToDo.FlatAppearance.BorderSize = 0;
butEditToDo.FlatAppearance.MouseOverBackColor = Color.FromArgb(244, 244, 244);
butEditToDo.Cursor = Cursors.Hand;
butEditToDo.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.Edit_25));
pnlPendingNote.Controls.Add(butEditToDo);

// Pending Nane + Tag
RichTextBox rxtNotes = new RichTextBox();
rxtNotes.Size = new System.Drawing.Size(317, 68);
rxtNotes.Location = new Point(3, 37);
rxtNotes.Text = (read["notNote"].ToString());
rxtNotes.ReadOnly = true;
rxtNotes.BorderStyle = BorderStyle.None;
rxtNotes.DetectUrls = true;
rxtNotes.BackColor = Color.FromArgb(244, 244, 244);
pnlPendingNote.Controls.Add(rxtNotes);

所以当我点击ButEditToDo_Click时 - 我可以点击右键。

因此,当我点击此按钮时,我想启用RichTextbox - 当我再次单击该按钮时 - 我想更新数据库。

按钮点击:

private void ButEditToDo_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;

    for (int i = 1; i < pendingcounter; i++)
    {
        if (btn.Name == ("PenNote" + i))
        {
            break;
        }
    }
}

希望你能帮忙,启用按钮,我对数据库都很满意。

谢谢。

编辑一个

@Ed-谢谢。 请看图片。 enter image description here

我想要实现的目标 - 当我点击工具图标时 - 将启用RichTextBox。 因此,如果我点击第一个面板上的工具 - 那么我将启用R_TextBox来编辑文本。 然后Icon将更改,我将能够再次单击它以保存到数据库。

希望对你更有意义Ed。

1 个答案:

答案 0 :(得分:1)

只需给按钮一个执行操作的事件处理程序。使用lambda,以便可以引用对RichTextBox的本地引用。

    Button butEditToDo = new Button();
    //  ...snip...
    RichTextBox rxtNotes = new RichTextBox();
    //  ...snip...

    butEditToDo.Click += (sender, args) =>
    {
        CycleNoteState(rxtNotes);
    };

这是事件处理程序的内容。你可以将这一切都放在事件处理程序中,但代码的可读性更强。 CycleNoteState不是一个很好的名字,但我不清楚你的程序的语义。

我可能误解了按钮在连续点击时的作用的逻辑。如果它比这更复杂,你可以引入状态枚举或其他东西。让我知道,我们会弄明白的。

private void CycleNoteState(RichTextBox rtb)
{
    if (!rtb.Enabled)
    {
        rtb.Enabled = true;
    }
    else
    {
        //  Do save stuff here
    }
}