Welcome!

.NET Authors: Liz McMillan, Yakov Werde, Matthew Pollicove , Kevin Benedict

Related Topics: .NET

.NET: Article

Creating Controls for.NET Compact Framework in Visual Studio 2005

Learn to build the building blocks of mobile UI

Listing 1

namespace SignInControl {
public partial class SignInControl : UserControl {
    private ImageList animationImages = null;
    private AnimationMode animationMode = AnimationMode.None;
    private int animationCounter = 0;
    public SignInControl(){
        InitializeComponent();
     }
    public string UserName {
        get { return textBox1.Text;  }
        set { textBox1.Text = value;  }
     }
    public string Password {
        get { return textBox2.Text;  }
        set { textBox2.Text = value;  }
     }
    public ImageList AnimationImages {
        get { return animationImages;  }
        set { animationImages = value;  }
     }
    public AnimationMode AnimationMode {
        get { return animationMode;  }
        set { animationMode = value; UpdateAnimation(); }
     }
    private void UpdateAnimation() {
        switch (animationMode) {
            case AnimationMode.None:
                animationTimer.Enabled = false;
              break;
            case AnimationMode.On:
              animationCounter = 0;
              animationTimer.Enabled = true;
              break;
     }
     pictureBox1.Image = null;
  }
private void animationTimer_Tick(object sender, EventArgs e) {
   Image img = null;
   if (animationImages != null 
     && animationImages.Images.Count > 0) {
     if (animationCounter
        >= animationImages.Images.Count)
        animationCounter = 0;
     img = animationImages.Images[animationCounter];
     animationCounter++;
     }
   pictureBox1.Image = img;
  }
}
}


Listing 2

<Classes xmlns="http://schemas.microsoft.com/VisualStudio/
2004/03/SmartDevices/XMTA.xsd">
  <Class Name="SignInControl.SignInControl">
      <Property Name="Password">
          <Category>Data</Category>
          <Description>Password user enterred.</Description>
      </Property>
      <Property Name="UserName">
          <Category>Data</Category>
          <Description>User name enterred.</Description>
      </Property>
      <Property Name="AnimationMode">
          <Category>Appearance</Category>
          <Description>Whether animation is on or off.
</Description>
      </Property>
      <Property Name="AnimationImages">
          <Category>Appearance</Category>
          <Description>Images used in animation.</Description>
      </Property>
  </Class>
</Classes>



Listing 3

      PasswordInputMode inputMode = PasswordInputMode.Regular;
public PasswordInputMode PasswordInputMode {
    get { return inputMode;  }
    set { inputMode = value;  }
}

private void textBox2_GotFocus(object sender, EventArgs e) {
    IntPtr hWnd = GetFocus();
    if (PasswordInputMode == PasswordInputMode.NumberOnly) 
        SendMessage(hWnd, EM_SETINPUTMODE, 0, EIM_NUMBERS);
else
        SendMessage(hWnd, EM_SETINPUTMODE, 0, EIM_TEXT);
}

private const uint EM_SETINPUTMODE = 0xDE;
private const uint EIM_NUMBERS = 2;
private const uint EIM_TEXT = 3;

[DllImport("coredll.dll")]
public static extern IntPtr GetFocus();

[DllImport("coredll.dll")]
public static extern int SendMessage(IntPtr hWnd, 
uint Message, uint wParam, uint lParam);

More Stories By Xin Yan

Xin Yan has been a software design engineer at Microsoft for over 7 years. He works on Visual Studio developer tools platform team.

Comments (4) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Jay Dixit 10/11/07 07:07:23 AM EDT

Hi truly a great article but i am new for it and just have some queries.
1. I don't understand AnimationMode.
2. I don't understand PasswordInputMode.
As per the understanding i have gone throught the detail and implemented the same. After leaving AnimationMode and PasswordInputMode, i have run the code on emulator but i am not able to see the effect.

Please help me for this.

Jacques Herweijer 02/05/07 03:23:28 PM EST

Hi great article, I completely understand the usercontrols now in a few minutes, its better than reading a book about it ! That however leaves me with 2 unanswered questions hope you can answer them.

My first question is, How can I access the properties of the labels as soon as the usercontrol is used on a form, so I can change the Text property depending on the form I am using it on, or do I have to create a new usercontrol that inhertis your example for each label Text I want to use and drop that one on my form. I think this is very much work for just setting a label.

And then my second one, How can I add controls to the usercontrol when I put it on my form ? For example if I wanted to add a button to the usercontrol when it is on my form but not in de usercontrol class itself (like a panel can contain controls) in Design-time ofcourse.

Hope you can and be willing to give me an answer because I cannot find these answers anywhere. I think its hard to search the web when some functionallity is not available for Smart Device projects.

Anyway Great article that give me a head start.

.NET News Desk 07/28/05 02:49:36 PM EDT

Creating Custom Controls for Microsoft .NET Compact Framework in Visual Studio 2005
Visual Studio 2005 fully supports creating custom controls in .NET Compact Framework. In addition, custom control developers can create a great design-time experience for custom control users. Design-time support makes it easier for developers to use custom controls in Visual Studio 2005 Smart Device projects.

.NET News Desk 07/28/05 02:49:30 PM EDT

Creating Custom Controls for Microsoft .NET Compact Framework in Visual Studio 2005
Visual Studio 2005 fully supports creating custom controls in .NET Compact Framework. In addition, custom control developers can create a great design-time experience for custom control users. Design-time support makes it easier for developers to use custom controls in Visual Studio 2005 Smart Device projects.