如何在Visual Studio中围绕等号转换代码?

时间:2009-01-09 23:38:28

标签: c# visual-studio-2008

编写代码以填充对象中的文本框后,例如:

txtFirstName.Text = customer.FirstName;
txtLastName.Text = customer.LastName;
txtAddress.Text = customer.Address;
txtCity.Text = customer.City;

是否可以在Visual Studio(甚至像Resharper之类的东西)中将此代码复制并粘贴到保存函数中并反转等号周围的代码,以便它看起来像:

customer.FirstName = txtFirstName.Text;
customer.LastName = txtLastName.Text;
customer.Address = txtAddress.Text;
customer.City = txtCity.Text;

4 个答案:

答案 0 :(得分:71)

在VS2012之前:

  • 复制并粘贴原始代码块
  • 在要切换的位置再次选择
  • 按Ctrl-H键以显示“替换”框
  • 在“查找内容”下:{[a-zA-Z\.]*} = {[a-zA-Z\.]*};
  • 在“替换为”下方放置:\2 = \1;
  • 查看:“选择”
  • 使用:“正则表达式”
  • 点击全部替换

使用.NET正则表达式的VS2012(可能是后来的):

  • 复制并粘贴原始代码块
  • 在要切换的位置再次选择
  • 按Ctrl-H键以显示“替换”框
  • 在“查找内容”下:([a-zA-Z\.]*) = ([a-zA-Z\.]*);
  • 在“替换为”下方放置:${2} = ${1};
  • 确保选中了.*(正则表达式)图标(替换文本框下的第三个)
  • 点击全部替换

答案 1 :(得分:4)

我不知道。当然,如果您使用许多可用的绑定方法之一,那么您将不必 - 绑定将在两个方向上进行更新(包括通过通知进行更改)。

所以对于winforms:

txtFirstName.DataBindings.Add("Text", customer, "FirstName");

答案 2 :(得分:2)

我有同样的需求,但在John提供的解决方案中我不得不接受比a-zA-Z\.更多的字符,所以我稍微修改了它的常规异常:

找到:{^[^\=]*} = {.*}

替换为:\2 = \1

这将在一行

上找回任何 第一个等号

答案 3 :(得分:0)

首先使用Resharper将它们放在那里的选项是定义一个类似于的实时模板:

$uiElement$ = $dto$;
$dto$ = $uiElement$;

这将允许您键入一次,它将为您复制它,然后您可以将保存版本剪切并粘贴到另一个方法。