如何在Visual Studio中围绕等号转换代码?
编写代码以填充对象中的文本框后,例如:
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;
在VS2012之前:
- 复制并粘贴原始代码块
- 在要切换的位置再次选择它
- 按Ctrl-H以显示“替换”框
- 在“查找内容”下:
{[a-zA-Z\.]*} = {[a-zA-Z\.]*};
- 在“替换为”下放:
\2 = \1;
- 看看:“选择”
- 使用:“正则表达式”
- 点击全部替换
使用.NET正则表达式的VS2012(可能是后来的):
- 复制并粘贴原始代码块
- 在要切换的位置再次选择它
- 按Ctrl-H以显示“替换”框
- 在“查找内容”下:
([a-zA-Z\.]*) = ([a-zA-Z\.]*);
- 在“替换为”下面:
${2} = ${1};
- 确保选中
.*
(正则表达式)图标(替换文本框下的第三个) - 点击全部替换
没有我知道的。 当然,如果您使用许多可用的绑定方法之一,那么您将不必 – 绑定将在两个方向上执行更新(包括通过通知进行更改)。
所以对于winforms:
txtFirstName.DataBindings.Add("Text", customer, "FirstName");
等等
我有同样的需要,但我必须接受比a-zA-Z\.
更多的字符a-zA-Z\.
在John提供的解决方案中,我稍微修改了它的常规exception,如下所示:
找到: {^[^\=]*} = {.*}
替换为: \2 = \1
这将反转在一条线上找到的第一个等号周围的任何东西
使用Resharper首先以这种方式将它们放在那里的选项是定义一个类似于的实时模板:
$uiElement$ = $dto$; $dto$ = $uiElement$;
这将允许您键入一次,它将为您复制它,然后您可以将保存版本剪切并粘贴到另一个方法。