Showing posts with label Visual Studio 2008. Show all posts
Showing posts with label Visual Studio 2008. Show all posts

Friday 3 December 2010

Show properties of a class on Property Grid

When developing user controls, usually we use Booleans, Integers, Strings, etc.. as data types of the attributes of the control. But sometimes, we have to use structures or other classes as attributes. So when we use those, we should be able to change or browse the attributes of those structures or classes.

Open visual studio IDE and create a new Windows Forms Application type project.

Add a new class and name it as ‘MyCustomClass’. And define two properties. One integer and a string type.

public class MyCustomClass {

public int MyIntProperty { get; set; }
public string MyStringProperty { get; set; }

public override string ToString() {
return "...";
}
}







**Please note that I have overridden the ‘ToString’ method. Because this what will be shown on the property grid when the properties are collapsed.



Now add a new user control to the project and name it as ‘MyCutomUsercontrol’. And create three properties. One integer, string and MyCustomClass. And use ‘[TypeConverter(typeof(ExpandableObjectConverter))]’ attribute on the third property. The syntax should be:






public partial class MyCutomUsercontrol : UserControl {
public MyCutomUsercontrol() {
InitializeComponent();
}

private MyCustomClass _MyCustomClass = new MyCustomClass();

public int Property1 { get; set; }
public string Property2 { get; set; }

[TypeConverter(typeof(ExpandableObjectConverter))]
[EditorBrowsable(EditorBrowsableState.Always)]
public MyCustomClass Property3 {
get {
return _MyCustomClass;
}
set {
_MyCustomClass = value;
}
}

}





 



Now build the solution. And add it a windows form. And on the property grid you can see your custom controls properties.



screen_1

Thursday 25 November 2010

Disabling tab pages on a Tab Control

Sometimes there can be a requirement, which we have to prevent users from accessing certain tab pages on a tab control. But there’s no straight forward method provided on the Visual Studio IDE (2005,2008 or 2010). But we can do that easily.

Add a tab control to your windows application. (tabControl1)

Add few tabs and few controls to each tab.

img_01

Now we’ll disable one tab using the following code on the form’s load event:

tabControl1.TabPages[2].Enabled = false;


** Please note : Though it does not list the ‘Enabled’ property on intellisense, it’s available.


Now if you run the application you can see, that all the controls in tab page 3 are dissabled.


img_02




But if we want to prevent from users accessing that tab, we can use this coding on tab controls selecting event (Not the page, but the control’s)


private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (!e.TabPage.Enabled)
{
e.Cancel = true;
}
}


Now if you run the application and try to select that tab page, you will not be able to do so..

Saturday 15 May 2010

Deploying windows applications using ClickOnce (Visual Studio 2008)

ClickOnce deployment allows you to publish Windows-based applications to a Web server or network file share for simplified installation. Visual Studio provides full support for publishing and updating applications deployed with ClickOnce. ClickOnce deployment is available for projects created with Visual Basic, Visual C#, and Visual J#, but not for Visual C++.
You can publish a ClickOnce application in three different ways: from a Web page, from a network file share, or from media such as a CD-ROM. A ClickOnce application can be installed on an end user's computer and run locally even when the computer is offline, or it can be run in an online-only mode without permanently installing anything on the end user's computer.

Open visual studio 2008 IDE and create a new windows application.
img_01_new_project

Go to Project –> <Application Name> Properties –> Publish
img_02_project_properties_publish

Publish Location
Publishing folder location can be either web site (http://www.mydomain.com/installation/), ftp (ftp://mydomain/installation) or file share. If you are using other than a file share to deployment, then you can provide a Installation Folder URL, since the end users may not have the permission to access the publishing folder directly. (Since I am using a shared path, installation folder URL will not be required)

Install Mode and Settings
If you select ‘The application is available online only’, each time it is run, it will be run from the published location and no start menu icon will be created.
But selecting ‘The application is available offline as well’, A shortcut on the Start menu will be created for the application and it will enable the application to be run when the user is disconnected from the network.

Publish Version
Here you should state the publish version (Not the application version). And if you check ‘Automatically increment revision with each publish’ will make sure that the revision number will get incremented automatically when you publish your application.

Application Files
image
Sometimes it is necessary to publish other files than the application. So this is where you state which ones to include or exclude from the deployment.

Prerequisites
img_05_prerequisites
You can create a setup file to install the prerequisites, which are required by your application in order to function correctly. And all required prerequisites are selected automatically. But if you want you can either add or remove them from your prerequisites setup.

Updates
img_04_application_update
In this window you should define how your application should be updated. Check ‘The application should check for updates’. And choose whether it should be updated before or after the application starts. If you choose to update it after running the application, you can mention whether you want to check each time it runs or can mention a time period, which it should check. But it is always advisable to check before application starts, so users will get the latest updates each time they run the application.
And mention a minimum required version, so that end user will get the mentioned version of the application, if they have an older version installed on their pc.
If the updating location is other than the publish location, please mention the path.

Save settings and go to the form designer and add a label to the form.
img_06_version1_form
Save and go to Build –> Publish <Application Name>
img_07a_publish_wizard_scr_1
If you wish do any changes to the publish settings which you completed earlier click next or click on the finish button.
img_07b_publish_wizard_scr_2
Click next
img_07c_publish_wizard_scr_3
Click next
img_07d_publish_wizard_scr_4
And the deployment setup will be created in the published path.
img_08_published_files
Run the setup.exe to install the application. And click on install button.
img_09_installing
img_10_version1_running

Now close the application and change the label to ‘Version 1.0.0.1’. And go to publish settings and on the update window change the minimum required version to 1.0.0.1.
img_04a_application_update
Click ok and save settings and publish the application.
There will be a start menu shortcut from the first installation.
img_11_startmenu_installation
Click on that to run the application. You will see an update screen and the updated application will be downloaded, installed and executed.
img_10a_version2_running
Above mentioned are the basic steps which is required to deploy a .Net windows application using ClickOnce.

For further information please click here

Wednesday 28 April 2010

Problem with connecting to the SQL Server database on development machine from the Pocket PC Emulator using Visual Studio 2008 - Resolved

When developing application for Smart Devices, we usually debug it using the Emulators which was provided by the Visual Studio installation. And one of the difficulties that we come across is when we try to connect our Smart Device to the SQL Server which is in our development machine.
    ** For this example I will be using Visual Studio 2008 and SQL Server 2008
Here are the steps for resolving that issue:
1. First of all download and install the Virtual PC. Because this is required to set up the Virtual Machine Network Driver for Microsoft Device Emulator (http://go.microsoft.com/fwlink/?linkid=46859). The installation process is a pretty straight forward one and make sure that the Visual Studio IDE or the Smart Device Emulator is not running.

2. From network settings, right click on the Local Area Network (Network Connection) and select Properties and make sure that the Virtual Machine Network Services option is checked
img_01_network_properties

3. For this I will be using the sample “Adventure Works Database”, and it can be downloaded from the CodePlex community site (http://msftdbprodsamples.codeplex.com/releases/view/37109)

4. Open Visual Studio IDE. Create a new Smart Device project. Use any name (Here I have used SampleSmartDeviceApplication) and select required framework from the list (I have chosen 3.5)
img_02_new_project_visual_studio_2008

5. Choose the target platform, .NET Compact Framework and the Template from the next screen. I have chosen “Pocket PC 2003”, “.Net Compact Framework Version 2.0” and “Device Application”.
img_03_target_platform_framework


6. In Visual Studio IDE open Tools—>Options. And from the window select Device Tools—>Devices and choose your device (I have chosen Pocket PC 2003 SE Emulator)
img_05_device_tools_options

7. Click on the properties button and from the device properties window, select “TCP Connect Transport” as the Transport and click on the Configure… button.
img_06_smart_device_emulator_properties
8. And use select the option “Use specific IP address” and type an appropriate IP address. (I have typed 192.168.0.190 since my development machine IP address is 192.168.0.198)
img_07_configure_tcp_ip_transport

9. Click ok and close the TCP/IP Transport window. Click on the Emulator button. And from the Emulator Properties window select the Network tab and check on the “Enable NE2000 PCMCIA network adapter and bind to” and select your network adapter.
img_08_configure_emulator_properties
10. Click the ok button and close the window. And click on the ok button and close the Smart Device Emulator properties window. Click on the OK button and close the Options window.
11. Add a button (button1) and a Grid (dataGrid1) to the form. And add the “System.Data.SqlClient” reference to the project.
img_04a_controls_added_to_form
12. Double click on the button and add the following code.


    string zCon = "Password=blogpassword;Persist Security Info=True;
    User ID=bloguser;Initial Catalog=AdventureWorks;
    Data Source=192.168.0.198\\sql2k8";
    SqlConnection objCon = new SqlConnection(zCon);
    objCon.Open();
    SqlCommand objCommand = new SqlCommand("select ProductID,Name,ProductNumber from Production.Product", objCon);
    DataSet dsData = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(objCommand);
    da.Fill(dsData);
    dataGrid1.DataSource = dsData.Tables[0];
    objCon.Close();



13. Run the application and select Pocket PC 2003 SE Emulator and click on deploy.


img_04b_run


14. Click on the “button1”. Then you get the following results.


img_04b_run_a