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;
}