How can I catch the mouse being over a control
Add a handler for the control’s MouseMove event. This will be hit as the mouse moves over the control’s Bounds rectangle.
How do I get a mouse cursor position in my control’s client coordinates
Use the Position property of the Cursor class found in the System.Windows.Forms namespace. Here is code that will flag whether the mouse is over button1. Point ptCursor = Cursor.Position; ptCursor = PointToClient(ptCursor); if( button1.Bounds.Contains(ptCursor) ) { //mouse over button1 //…. } else { //mouse not over button1 //…. }
How do I create a form with no border
Use the Form.FormBorderStyle property to control a form’s border. public void InitMyForm() { // Adds a label to the form. Label label1 = new Label(); label1.Location = new System.Drawing.Point(80,80); label1.Name = ‘label1’; label1.Size = new System.Drawing.Size(132,80); label1.Text = ‘Start Position Information’; this.Controls.Add(label1); // Changes the border to Fixed3D. FormBorderStyle = FormBorderStyle.Fixed3D; // Displays the border information. label1.Text = ‘The border is ‘ + FormBorderStyle; } (From the .NET Framework SDK documentation)
In the property browser for a custom control, how do I disable a property initially, but enable it later based on some other property changing
Implement ICustomTypeDescriptor, and provide your own PropertyDescriptor for that property that changes it’s return value for IsReadOnly.
What is the purpose of the [STA Thread] attribute for the Main method of a C# program
That marks the thread as being ‘Single Thread Apartment’ which means any multiple threaded calls need to be marshaled over to that thread before they are called. That’s there because Windows Forms uses some OLE calls (Clipboard for example), which must be made from the thread that initialized OLE. (from [email protected] on microsoft.public.dotnet.framework.windowsforms)