Solved

How to Close Form with Wpf User Control in Element Host

Posted on 2010-09-08
7
2,253 Views
Last Modified: 2013-11-27
I have a windows form  that has Wpf Content inside. I would like to put a close button in wpf user control to close windows form. Is there any easy way to do this?
Thanks in advance.
0
Comment
Question by:Zherquen
  • 3
  • 3
7 Comments
 
LVL 8

Expert Comment

by:Gururaj Badam
ID: 33625371
Expose an event within your wpf usercontrol and subscribe to that in the windows form.

Close the windows form on trigger.
0
 
LVL 10

Expert Comment

by:james-ct16
ID: 33625604
Howdy

An alternative to the above suggestion would be to create an interface eg iWindowsFormsHostedActions that contains definitions of any number of actions you may want to perform from the wpf control on you winforms host ie your close member.

Your winforms host then implements this interface. Your wpf controls have a property added to them that is of type iWindowsFormHostedAction (good idea here to be consistent with implementing another interface or create yourself an abstract class for consistency and interoperability). So after you create the instance of your wpf control in the winform form you also set the new property = this

At this point you can then simply call the close method on the iWindowsFormHostedAction property.

This method involves just a touch more work upfront but once you have set it up you can add additional functionality very quickly and easily.

Hope that helps

James
0
 

Author Comment

by:Zherquen
ID: 33630309
Thanks for detailed description James. I see what you mean but not totally. Can you show me that with an example please?
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 10

Expert Comment

by:james-ct16
ID: 33633361
Howdy

Sorry its taken a little while to get back to you, attached you should find some rough pseudo code providing an example of the above description. Im happy to provide any more help you may need.

James
// this is our shared interface for performing actions on our windows host

public interface iWindowsFormsHostedActions

{

  void CloseWindow();

}



// interface to impliment on wpf control

public interface iWpfInteraction

{

  iWindowsFormsHostedActions WinFormsHost {get;set;}

}



//winforms form

public class MainWindow: Form, iWindowsFormsHostedActions

{



public MainWindow()

{

// I assume the following is similiar to how you are adding your wpf control

System.Windows.Forms.Integration.ElementHost host = new System.Windows.Forms.Integration.ElementHost();

System.Windows.UIElement obj = new WpfControl();

((iWpfInteraction)obj).WinFormsHost = this;

host.Child = obj;

host.Dock = DockStyle.Fill;

this.Controls.Add(host);

}



public void CloseWindow()

{

this.Close();

}

}



public class WpfControl : UserControl, iWpfInteraction,iWindowsFormsHostedActions

{

WindowsFormsHostedActions WinFormsHost 

{

get

{

// get logic

}

set

{

// set logic

}

}



public void CloseWindow()

{

if (WinFormsHost != null)

{

WinFormsHost.CloseWindow();

}

}



}

Open in new window

0
 

Author Comment

by:Zherquen
ID: 33635350
Thanks for your reply James. While building your sample it get an error like this.
Missing partial modifier on declaration of type 'WpfOnForms.WpfControl'; another partial declaration of this type exists

I generate the  public class WpfControl inside WpfControl.xaml.cs (Changed  WindowsFormsHostedActions --> iWindowsFormsHostedActions )

Where might the error raised from?

Thanks In advance
0
 
LVL 10

Accepted Solution

by:
james-ct16 earned 500 total points
ID: 33636146
Good evening

Sorry maybe an element of misunderstanding here, WpfControl was just a pseudo example of a wpf control. With any luck now I have access to a dev environment here should be a complete worked example. You should be able to download it from here http://www.kobler.com.au/WpfInteractionExample.zip, Please let me know once you have a copy as Ill remove it.



James
0
 

Author Closing Comment

by:Zherquen
ID: 33638358
Good Evening James,
I have download the example and complied. It is working as intended :). This example is going to improve my programming quality by the way. Thanks for your advices and helps :) .
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now