C# 编辑以复制条带项目不工作

C# 编辑以复制条带项目不工作,c#,optimization,C#,Optimization,这是设置动态编辑的正确代码吗→ 复制mnuStripItem 此代码用于复制用户高亮显示的任何内容,并正确输出 private void copyToolStripMenuItem_Click(object sender, EventArgs e) { Form f = Form.ActiveForm; // Find the control that has focus Control focusedControl = f.Active

这是设置动态编辑的正确代码吗→ 复制
mnuStripItem

此代码用于复制用户高亮显示的任何内容,并正确输出

private void copyToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Form f = Form.ActiveForm;

        // Find the control that has focus
        Control focusedControl = f.ActiveControl;

        // See if focusedControl is of a type that can select text/data
        if (focusedControl is TextBox)
        {
            TextBox tb = focusedControl as TextBox;
            Clipboard.SetDataObject(tb.SelectedText);
        }
        else if (focusedControl is DataGridView)
        {
            DataGridView dgv = focusedControl  as DataGridView;
            Clipboard.SetDataObject(dgv.GetClipboardContent());
        }
        //else if (...more?...)
        //{
        //}

    }

这是绝对正确的,但通常当我必须处理很多check语句时,我更喜欢使用switch语句。它更容易阅读,而且我认为在这种情况下它的性能也会更好(不需要使用“is”和“as”语句):


问题是什么。请校对你的帖子。这个问题或多或少是动态的。使用if语句是否正确,或者它们是避免编写这么多代码的一种方法。寻找优化的代码,因为它不输出。不是一个好主意。他的第一个应该是
is TextBoxBase
。真的,一个开关会更有意义,谢谢@HansPassant TextBoxBase与TextBox有何不同?
Control focusedControl = f.ActiveControl;

switch (focusedControl.GetType())
{
    case typeof(TextBox):
        TextBox tb = (TextBox)focusedControl;
        Clipboard.SetDataObject(tb.SelectedText);
        break;

    // ...

    default:
        break;
}