@@ -28,7 +28,7 @@ class MethodBodyVisitor : VBasic.VisualBasicSyntaxVisitor<SyntaxList<StatementSy
2828 private readonly VBasic . VisualBasicSyntaxVisitor < CSharpSyntaxNode > _nodesVisitor ;
2929 private readonly Stack < string > _withBlockTempVariableNames ;
3030 private readonly HashSet < string > _extraUsingDirectives ;
31- private readonly ILookup < string , MethodWithHandles > _handledMethodsFromPropertyWithEventName ;
31+ private readonly MethodsWithHandles _methodsWithHandles ;
3232 private readonly HashSet < string > _generatedNames = new HashSet < string > ( ) ;
3333
3434 public bool IsIterator { get ; set ; }
@@ -41,7 +41,7 @@ class MethodBodyVisitor : VBasic.VisualBasicSyntaxVisitor<SyntaxList<StatementSy
4141 public MethodBodyVisitor ( VBasic . VisualBasicSyntaxNode methodNode , SemanticModel semanticModel ,
4242 VBasic . VisualBasicSyntaxVisitor < CSharpSyntaxNode > nodesVisitor , CommonConversions commonConversions ,
4343 Stack < string > withBlockTempVariableNames , HashSet < string > extraUsingDirectives ,
44- AdditionalLocals additionalLocals , ILookup < string , MethodWithHandles > handledMethodsFromPropertyWithEventName ,
44+ AdditionalLocals additionalLocals , MethodsWithHandles methodsWithHandles ,
4545 TriviaConverter triviaConverter )
4646 {
4747 _methodNode = methodNode ;
@@ -50,7 +50,7 @@ public MethodBodyVisitor(VBasic.VisualBasicSyntaxNode methodNode, SemanticModel
5050 CommonConversions = commonConversions ;
5151 _withBlockTempVariableNames = withBlockTempVariableNames ;
5252 _extraUsingDirectives = extraUsingDirectives ;
53- _handledMethodsFromPropertyWithEventName = handledMethodsFromPropertyWithEventName ;
53+ _methodsWithHandles = methodsWithHandles ;
5454 var byRefParameterVisitor = new ByRefParameterVisitor ( this , additionalLocals , semanticModel , _generatedNames ) ;
5555 CommentConvertingVisitor = new CommentConvertingMethodBodyVisitor ( byRefParameterVisitor , triviaConverter ) ;
5656 }
@@ -116,12 +116,17 @@ private static SyntaxKind ConvertAddRemoveHandlerToCSharpSyntaxKind(VBSyntax.Add
116116
117117 public override SyntaxList < StatementSyntax > VisitExpressionStatement ( VBSyntax . ExpressionStatementSyntax node )
118118 {
119- var invoke = node . Expression as VBSyntax . InvocationExpressionSyntax ;
120- if ( invoke != null &&
121- invoke . Expression is VBSyntax . MemberAccessExpressionSyntax expr &&
122- expr . Expression is VBSyntax . MyBaseExpressionSyntax &&
123- expr . Name . Identifier . ValueText . Equals ( "Finalize" , StringComparison . OrdinalIgnoreCase ) ) {
124- return new SyntaxList < StatementSyntax > ( ) ;
119+ if ( node . Expression is VBSyntax . InvocationExpressionSyntax invoke && invoke . Expression is VBSyntax . MemberAccessExpressionSyntax access ) {
120+ if ( access . Expression is VBSyntax . MyBaseExpressionSyntax && access . Name . Identifier . ValueText . Equals ( "Finalize" , StringComparison . OrdinalIgnoreCase ) ) {
121+ return new SyntaxList < StatementSyntax > ( ) ;
122+ } else if ( CommonConversions . InMethodCalledInitializeComponent ( node ) &&
123+ access . Name . Identifier . ValueText . Equals ( "ResumeLayout" ,
124+ StringComparison . OrdinalIgnoreCase ) ) {
125+ var eventSubscriptionStatements = _methodsWithHandles . GetPreResumeLayoutEventHandlers ( ) ;
126+ if ( eventSubscriptionStatements . Any ( ) ) {
127+ return SyntaxFactory . List ( eventSubscriptionStatements . Concat ( SingleStatement ( ( ExpressionSyntax ) node . Expression . Accept ( _nodesVisitor ) ) ) ) ;
128+ }
129+ }
125130 }
126131
127132 return SingleStatement ( ( ExpressionSyntax ) node . Expression . Accept ( _nodesVisitor ) ) ;
@@ -152,22 +157,10 @@ _methodNode is VBSyntax.MethodBlockSyntax mb &&
152157 return postAssignment . Insert ( 0 , SyntaxFactory . ExpressionStatement ( assignment ) ) ;
153158 }
154159
155- /// <summary>
156- /// Make winforms designer work: https://github.com/icsharpcode/CodeConverter/issues/321
157- /// </summary>
158160 private SyntaxList < StatementSyntax > GetPostAssignmentStatements ( VBSyntax . AssignmentStatementSyntax node )
159161 {
160162 var potentialPropertySymbol = _semanticModel . GetSymbolInfo ( node . Left ) . ExtractBestMatch ( ) ;
161- if ( CommonConversions . MustInlinePropertyWithEventsAccess ( node , potentialPropertySymbol ) ) {
162- var fieldName = SyntaxFactory . IdentifierName ( "_" + potentialPropertySymbol . Name ) ;
163- var handledMethods = _handledMethodsFromPropertyWithEventName [ potentialPropertySymbol . Name ] . ToArray ( ) ;
164- if ( handledMethods . Any ( ) ) {
165- var postAssignmentStatements = handledMethods . SelectMany ( h => h . GetPostInitializationStatements ( potentialPropertySymbol . Name , fieldName ) ) ;
166- return SyntaxFactory . List ( postAssignmentStatements ) ;
167- }
168- }
169-
170- return SyntaxFactory . List < StatementSyntax > ( ) ;
163+ return _methodsWithHandles . GetPostAssignmentStatements ( node , potentialPropertySymbol ) ;
171164 }
172165
173166 public override SyntaxList < StatementSyntax > VisitEraseStatement ( VBSyntax . EraseStatementSyntax node )
0 commit comments