2009-01-09 14 views
23

Después de escribir código para rellenar cuadros de texto de un objeto, como por ejemplo:¿Cómo puedo revertir el código alrededor de un signo igual en Visual Studio?

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

es allí camino en Visual Studio (o incluso algo así como ReSharper) para copiar y pegar este código en una función de guardar y revertir el código en torno el signo igual, de modo que se verá así:

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

Respuesta

64

Antes VS2012:

  • Copiar y pegar el bloque de código original
  • Seleccione de nuevo en el lugar que desee cambiar
  • Presione Ctrl-H para obtener el cuadro "Reemplazar"
  • En "Buscar" poner: {[a-zA-Z\.]*} = {[a-zA-Z\.]*};
  • En "Reemplazar con" poner: \2 = \1;
  • Buscar en: "Selección"
  • Uso: "expresiones regulares"
  • Hit Reemplazar todo

Con VS2012 (y presumiblemente más adelante), que utiliza expresiones regulares de .NET:

  • Co py y pegar el bloque de código original
  • Seleccione de nuevo en el lugar que desee cambiar
  • Presione Ctrl-H para obtener el "Sustituir" caja hasta
  • En "Buscar" poner: ([a-zA-Z\.]*) = ([a-zA-Z\.]*);
  • en la sección "Sustituir por" poner: ${2} = ${1};
  • Asegúrese de que el icono .* (expresiones regulares) se selecciona (el tercero lo largo bajo el cuadro de texto de reemplazo)
  • Hit Reemplazar todo
4

Nada que yo sepa. Por supuesto, si usa uno de los muchos métodos de enlace disponibles, entonces no tendrá que hacerlo: el enlace hará la actualización en ambas direcciones (incluido el cambio a través de notificaciones).

Así que para WinForms:

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

etc

0

Una opción para conseguir que en allí de esa manera en el primer lugar con ReSharper sería definir una plantilla en vivo similar a:

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

Esto le permitirá escribir una vez y se duplicará por usted y luego puede cortar y pegar la versión de guardar para el otro método.

1

tenía la misma necesidad, pero tuve que aceptar más caracteres que a-zA-Z\. en la solución proporcionada por John así que un poco modificado su excepción regular de la siguiente manera:

Encuentra lo: {^[^\=]*} = {.*}

Sustituir por: \2 = \1

Esto invertirá nada cerca de la primer signo igual encontrado en una línea

Cuestiones relacionadas