2013-01-20 33 views
0

这是正确的代码,以建立一个充满活力编辑复制mnuStripItem编辑复制StripItem不工作

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

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?...) 
     //{ 
     //} 

    } 
+0

所以这就是问题。请证明看过你的帖子 – FrostyFire

+0

这个问题或多或少是动态的。使用if语句是否正确或是避免编写这么多代码的方法?因为它确实输出,所以寻找优化的代码。 –

回答

0

这是绝对正确的,但通常当我必须处理很多检查语句时,我更愿意使用switch语句。这是更容易阅读,我认为它也将在这种情况下更多的表现(不需要使用“是”和“as”语句):

Control focusedControl = f.ActiveControl; 

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

    // ... 

    default: 
     break; 
} 
+0

不是这样一个好主意。他的第一个应该是'TextBoxBase'。 –

+0

哦该死的......是的,我只是看着这个.. –

+0

啊真正的开关会更有意义的感谢。 @HansPassant TextBoxBase与TextBox有何不同? –