Jak odwrócić kod wokół znaku równości w programie Visual Studio?

Po napisaniu kodu wypełniającego pola tekstowe z obiektu, np.:

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

Czy jest sposób w Visual Studio (a nawet coś takiego jak Resharper), aby skopiować i wkleić ten kod do funkcji save i odwrócić kod wokół znaku równości, aby wyglądał następująco:

customer.FirstName = txtFirstName.Text;
customer.LastName = txtLastName.Text;
customer.Address = txtAddress.Text;
customer.City = txtCity.Text;
Author: ckal, 2009-01-10

4 answers

Przed VS2012:

  • skopiuj i wklej oryginalny blok kodu
  • wybierz go ponownie w miejscu, w którym chcesz się przełączyć
  • naciśnij Ctrl-H, aby uzyskać pole "Zastąp"
  • Pod "Znajdź co" umieścić: {[a-zA-Z\.]*} = {[a-zA-Z\.]*};
  • w polu "Replace with" wpisz: \2 = \1;
  • Look in: "Selection"
  • Use: "wyrażenia regularne"
  • Hit Zamień Wszystkie

Z VS2012 (i prawdopodobnie później), który używa wyrażeń regularnych. Net:

  • skopiuj i wklej oryginalny blok kodu
  • wybierz go ponownie w miejscu, w którym chcesz się przełączyć
  • naciśnij Ctrl-H, aby uzyskać pole "Zastąp"
  • Pod "Znajdź co" umieścić: ([a-zA-Z\.]*) = ([a-zA-Z\.]*);
  • w polu "Zamień na" Wpisz: ${2} = ${1};
  • upewnij się, że ikona .* (wyrażenia regularne) jest zaznaczona (trzecia obok pola tekstowego)
  • Hit Zamień Wszystkie
 69
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-18 19:59:06

Nic mi o tym nie wiadomo. Oczywiście, jeśli użyjesz jednego z wielu dostępnych metod wiązania, nie będziesz musiał - Wiązanie wykona aktualizację w obu kierunkach (w tym zmianę za pomocą powiadomień).

Więc dla winforms:

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

Etc

 4
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 23:41:40

Miałem taką samą potrzebę, ale musiałem zaakceptować więcej znaków niż a-zA-Z\. w rozwiązaniu dostarczonym przez Johna, więc lekko zmodyfikowałem jego zwykły wyjątek w ten sposób:

Find what: {^[^\=]*} = {.*}

Zastąp na: \2 = \1

To odwróci cokolwiek pojawi się pierwszy znak równości znaleziony w linii

 2
Author: Arno 2501,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-12 10:46:35

Opcją, aby je tam umieścić w pierwszej kolejności z Resharper byłoby zdefiniowanie żywego szablonu podobnego do:

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

To pozwoli Ci wpisać je raz i powieli to za Ciebie, a następnie możesz wyciąć i wkleić wersję zapisu do innej metody.

 0
Author: toad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-09 23:46:18