Consider a scenario like passing a value from SharePoint page(ex. document library URL) or something to a windows form application function and execute a code based on the value passed. Web page and windows form may seem like two completely non-linked entities. But there is a way to establish connection to and fro.
1. Create a Win formand add a webbrowser control. Give the SharePoint site URL as the webbrowser control URL property.
2. Inside the Win formadd the ComVisibleAttribute to the class level.
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Save : System.Windows.Forms.Form
{}
3. Add the ObjectForScripting property. This will act as a interface between the webpage and Win form
[BrowsableAttribute(false)]
public Object ObjectForScripting { get; set; }
4. Add a function in Win form with a parameter just for test purpose. We will call this function from the SharePoint page.
public void Test(String docurl)
{
MessageBox.Show(docurl);
}
5. Now in the SharePoint page in the aspx page(if its an application page) call the Winform function by calling the below javascript code.
window.external.Test('url');
This will call the parent WinForm function and popup the message box.
6. To call this in .cs file code register with client script like below
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "opendoc", "window.external.Test('" + locationpath + "/" + docname.Text);", true);