我怎么能只编写一次代码并复制c#

我怎么能只编写一次代码并复制c#,c#,class,C#,Class,我不熟悉C#和课程。我正在测试制作一个datagridview,用户可以在其中右键单击并弹出一个contextmenustrip。现在我的问题如下 我的代码将文本添加到文本框中,如果文本框不是空的,则增加文本框 有没有一种方法可以让这个代码只运行一次,并在每次需要时调用它。所以我只需要更改文本框。文本?否则,我需要复制和粘贴这个代码超过10次 我尝试的 private void TsmItem_Click(object sender, EventArgs e) {

我不熟悉C#和课程。我正在测试制作一个datagridview,用户可以在其中右键单击并弹出一个contextmenustrip。现在我的问题如下

我的代码将文本添加到文本框中,如果文本框不是空的,则增加文本框

有没有一种方法可以让这个代码只运行一次,并在每次需要时调用它。所以我只需要更改文本框。文本?否则,我需要复制和粘贴这个代码超过10次

我尝试的

    private void TsmItem_Click(object sender, EventArgs e)
    {
        Textbox.Text = RightMouseClick(Textbox.Text);
    }


    private void RightMouseClick(string txtResult)
    {
        int rowindex = dgvResults.CurrentCell.RowIndex;
        int columnindex = dgvResults.CurrentCell.ColumnIndex;

        if (string.IsNullOrEmpty(txtResult))
        {
            txtResult = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
        }
        else
        {
            string selectedCell;
            double resultText;
            selectedCell = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
            resultaat = Convert.ToDouble(txtResult) + Convert.ToDouble(selectedCell);
            txtResult = Convert.ToString(resultText);
        }
    }
修复

        private string RightMouseClick(TextBox txtResult)
    {
        int rowindex = dgvResults.CurrentCell.RowIndex;
        int columnindex = dgvResults.CurrentCell.ColumnIndex;

        if (string.IsNullOrEmpty(txtResult.Text))
        {
            return txtResult.Text = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
        }
        else
        {
            string selectedCell;
            double resultaat;
            selectedCell = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
            resultaat = Convert.ToDouble(txtResult.Text) + Convert.ToDouble(selectedCell);
            return txtResult.Text = Convert.ToString(resultaat);
        }

    }

您可以将文本框用作参数

    private void RightMouseClick(TextBox txtBox)
    {
        int rowindex = dgvResults.CurrentCell.RowIndex;
        int columnindex = dgvResults.CurrentCell.ColumnIndex;

        if (string.IsNullOrEmpty(txtResult))
        {
            txtBox.Text = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
        }
        else
        {
            string selectedCell;
            double resultText;
            selectedCell = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
            resultaat = Convert.ToDouble(txtBox.Text) + Convert.ToDouble(selectedCell);
            txtBox.Text = Convert.ToString(resultText);
        }
    }

您应该确保您还进行了检查,以确保文本框不为空

如果您想要创建可重用的方法,那么您只能使用公共代码并通过参数添加特定的部分。你的方法中有哪些具体部分?您正在传递
Text
,传递一个完整的
TextBox
控件如何?您可以将所有文本框的单击映射到同一事件处理程序。在设计器中,应添加this.textBox1.Click+=new System.EventHandler(this.RightClick);this.textBox2.Click+=newsystem.EventHandler(this.RightClick);等等然后,事件处理程序的发送方将是文本框,EventArgs将包含鼠标参数感谢您的回复。我修改了一些部分,这样它就可以工作了,现在我可以在每次右键单击操作中调用它。
    private void RightMouseClick(TextBox txtBox)
    {
        int rowindex = dgvResults.CurrentCell.RowIndex;
        int columnindex = dgvResults.CurrentCell.ColumnIndex;

        if (string.IsNullOrEmpty(txtResult))
        {
            txtBox.Text = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
        }
        else
        {
            string selectedCell;
            double resultText;
            selectedCell = dgvResults.Rows[rowindex].Cells[columnindex].Value.ToString();
            resultaat = Convert.ToDouble(txtBox.Text) + Convert.ToDouble(selectedCell);
            txtBox.Text = Convert.ToString(resultText);
        }
    }