Can Of Code

Tag Archives: C#

C# Quick Tip – Painless Logins

Rather simple post this week. When using a login screen there is a feature that people have come to expect including myself.

Once you have entered your username and password which you may of done by using the keyboard and tabbing between the username and password text boxes. The final step would be to press enter as soon as you finish typing the password to be greeted with the next screen. A habit inherited from the web world i am sure. So how do we do it in a C# Application.

First step is to create a new event handler for the KeyUp Event of the password text box. In the event handler we want to do the following:

private void passwordTxt_KeyUp(object sender, KeyEventArgs e)
{
     if (e.Key == Key.Enter)
     {
         login(); // A method that does the login code
     }
}

 

To some it up, each time a character is pressed when the password textbox has focus it will check if the key is the Enter key. Its as simple as that!

Posted in c#, Software | Tagged , | Leave a comment

WPF / C# notifcations pop up

There becomes a point in a lot of applications where you hit the notification wall. I have recently been working on an RSS Reader to practice some concepts that are covered in the MCTS (Windows Application Development 70-511) exam.  I got the application working with data bindings and all the other WPF Wizardry and decided to start using it. I currently use Outlook to read RSS Feeds so i thought it would be worth seeing if what i had created was any better.  I stumbled across a real issue for me. It didn’t notify me when it had updated. This isn’t really a big issue is it? Well it really was, because i have become very much hooked to applications telling me when something has happened for example, email, tweetdeck, MSN Messenger etc. Like below.

TweetDeck Notification window

A prime example of a notification window

 

Rather then give up with my application i thought why not add my own notifications to it! So here is a little guide on how to add a notification popup to your application.

 

the form

No massive surprise, but we start by creating a form or should i say window as its WPF. the window will be what is displayed when the notification happens.

Heres the one i made:

WPF Notification Popup

The design i can leave to your imagination, but there are a few properties within the window we need to set to make it look right. Here is the XAML snippet for window

<Window x:Class="RSSBuddy.notificationWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="notificationWindow"  ResizeMode="NoResize" ShowInTaskbar="False"
        Topmost="True" WindowStyle="None" HorizontalAlignment="Right"
        VerticalAlignment="Bottom">

 

So lets explain some of the things we are doing:

ResizeMode = NoResize

This is a pretty simple one, it just means the user wont be able to resize the notification window, which is fine because why would they want to?

ShowInTaskbar = False

Again, pretty simple, we don’t want this window to have an icon in the taskbar because its not really a window people will see for long.

Topmost = True

This property is pretty important to our notification window. the property forces the window right to the front of the screen in front of any open applications. If we didn’t set this to true, the notification window will end up getting lost behind other applications.

WindowStyle = none

This property means that we don’t have the border around the window or the close button and title. We set this to none so we can do our own title bar that fits better to the application.
HorizontalAlignment= Right & VerticalAlignment= Bottom

Both these properties are in charge of placing the window in the bottom right corner.

 Wait a minute…

If you now create your notification window and run it, something rather bizarre will happen. Your notification window will appear not in the very bottom right of the screen where you wanted it. This happens because it positions itself at the bottom right of its parent window NOT the screen. The way i overcome this was to do a bit of code tweaking before i opened the window:

  note = new notificationWindow(newitemcount);
  note.Top = main.ActualHeight - note.Height - 15;
  note.Left = main.ActualWidth - note.Width - 30;
  note.Show();

 

This code is what i use to open the notification window when something has happened. firstly we create the notification window object. Now to get over the problem of the misplacement. I go and manually set the notification windows Top and Left Properties. I set them by getting my parent screens ActualHeight (my parent screen is set to Maximise by default) and taking away the Height of my notification window and then and extra 15 for good measure. This results in the notification window appearing where it should!  the bottom right corner.

NOTE: If your parent screen is not Maximized you could use the following instead of the parent windows ActualHeight and ActualWidth (thanks to: this)

System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight

 

Posted in c#, Software, WPF | Tagged , , , | 2 Comments

C# Quick Tip 1 – The Using statement

If you have ever dealt with C# enough to hook up to a database and use a DataReader you would of properly seen a Exception along the lines of “There is already an open DataReader associated with…” (unless your some kind of programming god!). You would get this exception  because you had forgot to close a previous DataReader somewhere, annoying right?

Well i had this problem a little while ago but it was happening because an exception was getting thrown which meant it skipped right past my .Close() call. It was at this point i found out about the joyous using statement.

So Here it is:

using (SqlDataReader reader = com.ExecuteReader())
{
       // Some wizzy Database reading
}

Its the same as:

SqlDataReader reader = com.ExecuteReader();

 // Some wizzy Database reading

reader.Close();

But… In the second example, if the code is within a Try..Catch and the wizzy database reading  code throws an exception. it will miss the .Close() statement and then you’ve got  to go and find out why.  The first example will automatically close the reader as soon as it leaves the block! which save you the pain! and i think it looks much cleaner then having .Close() statements everywhere.

If you enjoy reading the MSDN site here is a link to the using statements page

Posted in c#, Software | Tagged , , , , | Leave a comment