Kunal-Chowdhury.com - Microsoft Technology Blog for developers and consumers

Fix for Visual Studio 2010 RC Intellisense Crash

Microsoft has released two hot fixes till now for Visual Studio 2010 RC crash related to intellisense. The people who are currently using Visual Studio 2010 RC in a machine having UI Automation 3.0 APIs, touch screen, screen reader etc. have to download & install the following two HotFixes:

Click here to get the first Fix for Visual Studio 2010 RC

Click here to get the second fix for Visual Studio 2010 RC

If you need any more information on the fixes then get it here at MSDN Blog.



C# 4.0 New Features – Named and Optional Parameters

In this post I will talk for one of the new feature in C# 4.0 – Named and Optional Parameter. Actually these are not a single feature but two different feature. You can get more benefit if you work with them together. So, what are those? Named parameter is a way to provide an parameter to the method using the name of the corresponding parameter instead of its position in the parameter list. Whereas, optional parameter allows you to omit arguments to member invocation.


Silverlight 5 Wish list – Please contribute yours

Hi folks, as all of you know that Silverlight 4 is now going to come out as “Go-Live” license within a few months and also in the mean time there are some wishlist coming for Silverlight 5, hence I am writing this post to collect those most wanted features requested by the community. Please contribute your wishlist for Silverlight 5 here (as comment) and I will update that list regularly.
  • Sophisticated Authentication & Security (includes client certificates as credentials for web service call) - [Vote] – alexander.biskop
  • More encryption algorithm - [Vote] – alexander.biskop
  • More flexible way to do localization in DataForm/DataGrid - [Vote] – sladapter
  • Application patching functionality - [Vote] – Haathen
  • Better Local Messaging API - [Vote] – ksleung
  • Better drawing API - [Vote] – ksleung
  • Support for Report Viewer - [Vote] - mlonny
  • Real time printing support - [Vote] – ksleung
  • Support for iPod/iPhone - [Vote] - microsoft_kc
  • Android support - [Vote] – ksleung
  • Better 3D support like WPF - [Vote] - microsoft_kc
  • An embedded database component like SQL-CE that can be used in OOB mode - [Vote] – Joeyw
  • Better support for WritableBitmap - [Vote] – Joeyw
  • Vector Printing - [Vote] – Joeyw
  • Support for IObservable for databinding - [Vote] – Joeyw
  • Rich Text Editor which allows Word Wrapping around images or other elements - [Vote] - Erwin Beckers
  • BMP and GIF image support - [Vote] - Erwin Beckers
  • More advanced controls like Outlook Agenda/Calendar control - [Vote] - Erwin Beckers
  • Transparency Support in Out-Of-Browser Mode - [Vote] - microsoft_kc
  • Improved SaveFileDialog with DefaultName option - [Vote] - Neha
  • ChildWindow with NON-modal support - [Vote] - Amantha
  • Flash video playback - [Vote] - Erwin Beckers
  • A working webbrowser control in a non-out-of-browser scenario - [Vote] - Peter Gfader
  • Support tooltip better for transparent, init delay, show delay, tiling image brush - [Vote] - Anonymous
Your suggestions for Silverlight 5 feature requests are welcome to publish here. Cheers…
Also, you can post them & vote in Silverlight Uservoice.

How can I work with Silverlight 4 in Visual Studio 2010 RC?

I think this is now-a-days a common issue for all the developers who are currently exploring both Visual Studio 2010 RC and Silverlight 4 Beta. Microsoft has removed the bits of Silverlight in the RC version of Visual Studio 2010. To work with that lots of people are now asking the same question.

Today I found a link which is written in a different version. I thought to share this thru my blog which may help the fellow developers (who are keeping a eye to my blog posts) to explore both simultaneously. Here is the original link of the post: http://sorokoletov.com/2010/02/hate-2-wait-silverlight-4-beta-2-vs-2010-rc/

Use the below link to translate it in English: http://tinyurl.com/SL4inVS2010RC-en

If you follow the steps provided in that blog post, you can install the Silverlight 4 Beta in your Visual Studio 2010 RC environment & start working on it till Microsoft releases the RC version of Silverlight. Go ahead and enjoy.

Remember: WCF RIA Services doesn’t work with this hack. I strongly recommend you to work with Visual Studio 2010 Beta 2 & Silverlight 4 Beta.


Tips & Tricks: Customizing Visual Studio 2010 Start Page

Introduction:
Do you know that you can easily customize the Visual Studio 2010 start page? Yes, this is true. This uses a XAML page which you can modify easily if you have a knowledge in XAML. Redesign your page with your brand & look, impress your users (mainly your team) with the new look.
image
Why should I do this:
Now before reading the steps question may arise in your mind “Why should I do this? I don’t care what the look is.” Yup, this is right but thing in some point of view where you want to show some sort of information/news tracker on the best coding practises your team should follow or you may want to show the pending tasks of the team in the start-up page or you may want to redesign that page with custom templates to meet your company brand or something else.
How can I do this:
How I can do this? First of all, go to your “My Documents\Visual Studio 2010\StartPages”. There you will find a project named “StartPage” with an additional XAML file named “StartPage.xaml”. This xaml page is your Start Page of the Visual Studio 2010. Remember that this is user specific file & have to deploy for all users.
Before doing anything take a backup of the same. Now open the StartPage project file which will load the xaml in your Visual Studio IDE. Modify it according to the look & feel you want. Save it & you will immediately see the effect in your startup page.
Not only this. You can also chose different XAML files for your Startup XAML page. Create a separate XAML file with your design in the same directory as mentioned above. Open your Visual Studio 2010. Go to Tools –> Options –> Environment –> Startup.
image
Select the “Custom Start Page” from the drop down that you have created. Hit “OK” to see it immediately in your start page. Remember that for security reason you can’t change the path as this executes under the trusted privileges of the user only & also uses some references to the Visual Studio UI assemblies.

Visual Studio 2010 Release Candidate available for download

Microsoft just released Visual Studio 2010 Release Candidate (RC) & is now available for MSDN Subscribers. It will be available publicly by this Wednesday, 10th February 2010. If you are a MSDN Subscriber, you can download it from MSDN site: http://msdn.microsoft.com/en-in/default(en-us).aspx
Visual Studio 2010 RC has a “Go-Live” license, means you can develop softwares/applications using it & publish it. As you all know the features of Visual Studio 2010 in the Beta release, but I am again posting the link of Visual Studio RC features & walkthrough guide here so that it will be beneficial for the new users.
Go here & have a look into the Visual Studio 2010 RC features and walkthrough guide: http://msdn.microsoft.com/en-us/vstudio/dd441784.aspx
One update regarding the RC release is it doesn’t support Silverlight 4 but you can load/create Silverlight 3 projects using that. According to Scott in his Blog Post: “Silverlight 3 projects are supported with today’s VS 2010 RC build – however Silverlight 4 projects are not yet supported.  We will be adding VS 2010 RC support for SL4 with the next public Silverlight 4 drop. If you are doing active Silverlight 4 development today we recommend staying with the VS10 Beta 2 build for now.” Hence, those who are actively working on Silverlight 4 should work on Visual Studio 2010 Beta 2 instead of upgrading to the Release Candidate.
Complete this survey for Visual Studio 2010 and .NET Framework 4 Release Candidate: https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=VS2010-RC
Last but not least, if you have any issue working with the RC version of Visual Studio 2010 or if you find any bug or if you have any future suggestions please never forget to report it at Microsoft Connect site: https://connect.microsoft.com/VisualStudio


How to create a Simple Arrow in Silverlight?

In this post I will discuss on how to create a Silverlight arrow. This will be beneficial for implementing Silverlight presentation where you can add some arrows to point to some blocks. This is simple enough to implement & will be beneficial for the beginners.

Create a Silverlight project. Now add a public class “Arrow” in it. Inside the Arrow.cs you have to add three lines (one is the base line, second is the left arrow head & the third is the right arrow head). Next you have to add those three lines inside a Panel.

Let’s start with creating the simple arrow in step-by-step process. First step is to create the base line of the arrow. Create a Line and set it’s (x1, y1) & (x2, y2). This will create the line.

private static Line CreateBaseLine(double startX, double startY, double length, Brush lineBrush, double thickness)
        {
            Line arrowLine = new Line();
            arrowLine.Stroke = lineBrush;
            arrowLine.StrokeThickness = thickness;
            arrowLine.X1 = startX;
            arrowLine.X2 = length;
            arrowLine.Y1 = startY;
            arrowLine.Y2 = startY;
            return arrowLine;
        }
Now lets create the left arrow head. The approach to it is same as creating the base line. Here only you have to pass the instance of the base line for calculating the (x1, y1).
private static Line CreateLeftArrowHead(Brush lineBrush, double thickness, Line arrowLine)
        {
            Line arrowLeft = new Line();
            arrowLeft.Stroke = lineBrush;
            arrowLeft.StrokeThickness = thickness;
            arrowLeft.X1 = arrowLine.X2 - 10.00;
            arrowLeft.X2 = arrowLine.X2;
            arrowLeft.Y1 = arrowLine.Y2 - 10.00;
            arrowLeft.Y2 = arrowLine.Y2;
            return arrowLeft;
        }
Creation of right arrow head is also similar to the one I mentioned for creating the left arrow head. The difference here is the y1.
private static Line CreateRightArrowHead(Brush lineBrush, double thickness, Line arrowLine)
        {
            Line arrowRight = new Line();
            arrowRight.Stroke = lineBrush;
            arrowRight.StrokeThickness = thickness;
            arrowRight.X1 = arrowLine.X2 - 10.00;
            arrowRight.X2 = arrowLine.X2;
            arrowRight.Y1 = arrowLine.Y2 + 10.00;
            arrowRight.Y2 = arrowLine.Y2;
            return arrowRight;
        }

Here instead of creating two separate methods for creating the two arrow heads you can just create only one method & pass the calculated (x1, y1) & (x2, y2). This is the simple approach mentioned here to give an idea to the beginner to create an arrow. It can be modified to implement some complex arrows like Horizontal, Vertical or even better Connected Arrows.

Download Sample Application: Silverlight Arrow Demo


Microsoft Community Techdays is going on in India

Microsoft Community Techdays is going on in India. It already started in 12 cities across India for Developers & IT Professionals. This will cover a big content on .Net 4.0, Visual Studio 2010, Silverlight, Cloud Computing, Windows 7 and SQL Server. Go ahead & learn the technical skills from the experts.

Visit the Community Techdays site and register yourself for your active participation. Chose any one of the event (Online or In-Person) which best suits you.


Firefox 3.6 Final – Available for download

Mozilla released their final version of Firefox 3.6 with additional features. Some of it’s top features are:

  • Private Browsing like Internet Explorer 8
  • Nice Password Manager
  • Fastest Browsing Speed
  • Anti-Phishing & Anti-Malware support
  • New Session Restore
  • Easy Customization of add-ons
  • Improved Tab Browsing
  • New Personalized Themes
  • Improved Favourite Toolbar

To check all other features of Mozilla Firefox visit the Firefox Features site. If you are not using that yet you can download it from Firefox Download site.


How to Ping network IP or Hostname in Silverlight Application?

Pinging a network IP or Hostname is not available in Silverlight. But you can do this using WCF service. In this post I am going to implement the same thing for you. I am using Silverlight 4 here. But this can also be possible in Silverlight 3.

Create a Silverlight application with Silverlight hosting website as “ASP.NET Web Site”:

image

Now this will create a XAML page for you by default. Add one TextBox & one Button into it. We will use TextBox to enter IP Address or the Hostname & on click of the Button it will ping that entered IP or Hostname. As a limitation to the Silverlight you can’t ping directly from the client application. You need to create a WCF service & using that you can easily ping. Remember there are some limitations here too as you are pinging it from the WCF hosting server.

Let’s implement our WCF service. Create a service method named PingNetwork and pass the hostNameOrAddress as a string. This will be your IP address or the host’s DNS name. Then create an instance of System.Net.NetworkInformation.Ping & pass the required parameter to it’s “Send” method. This will return you “PingReply”. Now check the Status of the reply. There are several options available. I used only IPStatus.Success to check it and depending upon that returning true or false.

    public bool PingNetwork(string hostNameOrAddress)
    {
        bool pingStatus = false;

        using (Ping p = new Ping())
        {
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 120;

            try
            {
                PingReply reply = p.Send(hostNameOrAddress, timeout, buffer);
                pingStatus = (reply.Status == IPStatus.Success);
            }
            catch (Exception)
            {
                pingStatus = false;
            }
        }

        return pingStatus;
    }

Now come to the client side implementation. Add the service reference to the Silverlight application and then call the service method with your IP Address or the DNS name of the host:

    client.PingNetworkAsync("google.com");

As it is an Asynchronous call, implement the “Completed” event for the method. In the completed event check the e.Result value. If the server is able to ping it will return true & in other case it will return false.

This is a simple implementation of the logic. As told earlier, this will ping from server & not from the client.


Silverlight: Drag And Drop ListBoxItem to Canvas (using Telerik Control)

While surfing thru different forum I noticed that, lots of people are actually facing issues while trying to implement the drag and drop feature. The main problem arises while trying to drag from a ListBox to a panel like canvas. In this post, I will go thru the steps to demonstrate such feature.

Here I will use Telerik control to give out the demonstration. You can download the trial version of the dlls from Telerik Silverlight Control Page. I have implemented the demo using Silverlight 4 Beta 1. The same thing is also possible in earlier version of Silverlight. You can download Silverlight SDK from Silverlight Site. To develop apps in Silverlight 4 you must need Visual Studio 2010 Beta 2 which you can download from Microsoft site.

So, lets go for implementing the same. Create a Silverlight project. Lets create a ListBox and a Canvas inside the LayoutRoot:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="150"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <ListBox x:Name="lstBox" Margin="10" Grid.Column="0"/>
    <Canvas x:Name="cnvDropBox" Background="Yellow" Margin="10" Grid.Column="1"/>
</Grid>
Now in the code behind, we have to register the Drag and Drop events for the ListBox & Canvas. Use RadDragAndDropManager class to register the same. 
RadDragAndDropManager.AddDragInfoHandler(lstBox, OnDragInfo);
RadDragAndDropManager.AddDragQueryHandler(lstBox, OnDragQuery);
RadDragAndDropManager.AddDropInfoHandler(cnvDropBox, OnDropInfo);
RadDragAndDropManager.AddDropQueryHandler(cnvDropBox, OnDropQuery);

RadDragAndDropManager.SetAllowDrop(cnvDropBox, true);
The implementation of the events will be as below:
private void OnDragQuery(object sender, DragDropQueryEventArgs e)
{
    if (e.Options.Status == DragStatus.DragQuery)
    {
        var draggedListBoxItem = e.Options.Source as Image;
        e.Options.DragCue = draggedListBoxItem.Source;
        e.Options.Payload = draggedListBoxItem.Source;
    }

    e.QueryResult = true;
    e.Handled = true;
}
private void OnDragInfo(object sender, DragDropEventArgs e)
{
    if (e.Options.Status == DragStatus.DragComplete)
    {
        // comment this block if you are going to clone
        lstBox.Items.Remove(e.Options.Source);
    }
}
private void OnDropInfo(object sender, DragDropEventArgs e)
{
    var droppablePanel = e.Options.Destination;

    if (e.Options.Status == DragStatus.DropComplete && droppablePanel is Canvas)
    {
        FrameworkElement dragableControl = null;
        Point desiredPosition = new Point();
        Point currentDragPoint = e.Options.CurrentDragPoint;
        Point canvasPosition = cnvDropBox.TransformToVisual(null).Transform(new Point());

        if (e.Options.Source is Image)
        {
            // create the new instance & update the necessary properties
            // this step is require if you are going to make a clone
            Image tempDragableControl = e.Options.Source as Image;
            dragableControl = new Image() { Source = tempDragableControl.Source };
            cnvDropBox.Children.Add(dragableControl);
        }

        desiredPosition.X = currentDragPoint.X - canvasPosition.X;
        desiredPosition.Y = currentDragPoint.Y - canvasPosition.Y;
        dragableControl.SetValue(Canvas.LeftProperty, desiredPosition.X);
        dragableControl.SetValue(Canvas.TopProperty, desiredPosition.Y);
    }
}
private void OnDropQuery(object sender, DragDropQueryEventArgs e)
{
    var droppablePanel = e.Options.Destination;

    if (e.Options.Status == DragStatus.DropDestinationQuery && droppablePanel is Canvas)
    {
        e.QueryResult = true;
        e.Handled = true;
    }
}

As I am using Image inside the ListBoxItem, hence OnDragQuery I am setting the Source as an Image to the DragCue & PayLoad properties. OnDragInfo I am removing item from the ListBox. If you don’t want to remove the dragged image from the ListBox then just remove that line. OnDropInfo I am just placing the Image to the appropriate position which we will get as CurrentDragPoint in the DragDropEventArgs.

This is a sample demonstration. So, you have to explore it more to fulfil your requirement.

Download Sample Application:  Drag And Drop ListBoxItem to Canvas Demo


 
© 2008-2017 Kunal-Chowdhury.com - Microsoft Technology Blog for developers and consumers | Designed by Kunal Chowdhury
Back to top