How can I work around my menu shortcuts from showing up incorrectly when I use Ctrl+Number?
When you assign Ctrl1, Ctrl2 etc as shortcuts for menuitems they show up as Ctrl+D1, Ctrl+D2. This can be worked around by creating and adding the menuitem through code as demonstrated below: [C#] //Create the menuitem MenuItem mymenuItem = new MenuItem(); //ShortCut mymenuItem.Shortcut = System.Windows.Forms.Shortcut.Ctrl1; //Add Event Handler for the menuitem mymenuItem.Click +=new EventHandler(this.mymenuItem_Click); //ShortCut Text to be displayed mymenuItem.Text = ‘My MenuItem’ +’\t’+ ‘Ctrl+1’; //hide shortcut mymenuItem.ShowShortcut = false; //Add it to the bottom of the first menu this.mainMenu1.MenuItems[0].MenuItems.Add(mymenuItem); [VB.NET] ’Create the menuitem Dim mymenuItem As MenuItem = New MenuItem() ’ShortCut mymenuItem.Shortcut = System.Windows.Forms.Shortcut.Ctrl1 ’Add Event Handler for the menuitem mymenuItem.Click +=New EventHandler(Me.mymenuItem_Click) ’ShortCut Text to be displayed mymenuItem.Text = ‘My MenuItem’ +’\t’+ ‘Ctrl+1’ ’hide shortcut mymenuItem.ShowShortcut = False ’Add it to the bottom of the first menu Me.mainMenu1.MenuItems(0).MenuItems.Add(mymenuItem)
What is the function of TypeDescriptor?
Here is an MSDN article that discuss about TypeDescriptor and its capabilities, Type Descriptor Overview in msdn
What is the (DynamicProperties) item listed on a control’s property page in VS.NET
Clicking Advanced… under this DynamicProperties option in the control properties displays certain control properties that can be set through an XML app.config file that is added to your project. This file stores the dynamic property values and is automatically read during the initialization process on the form at design time. You can manually edit this file to change the properties and next when you run the application, controls will pick up the new values. This file is used strictly for design time initializations.
How would I change the icon that appears on the toolbox for a custom control
You can do this in different ways explained below. In all the cases the bitmap or icon should follow these rules: The bitmap or icon dimension should be 16X16 with 16 colors. The left-bottom pixel-color will be assumed to be the transparent color. Technique 1: Use a bitmap (not an icon, in the embedded resource) file implicitly without specifying the ToolboxBitmapAttribute for the type: Say, you have a custom control MyControl in the namespace MyNamespace, create a bmp file MyControl.bmp following the above rules. Add this file to your project at the top-level and make it an embedded resource. The project’s default namespace should be MyNamespace. If the control’s namespace and the project’s default namespace don’t match then move the bitmap to appropriate subfolders so that they match. If this is not possible, typically when the namespaces are not related at all then you cannot use this technique, use instead one of the techniques below using the ToolboxBitmap attribute. Create the assembly and the next time you add it to the toolbox the custom image in MyControl.bmp should be available in the toolbox. This is the easiest technique to implement as it doesn’t require you to use the ToolboxBitmapAttribute in your type definition. Technique 2: Use ToolboxBitmap attribute. Example 1: Use a bitmap (not icon) in the embedded resource with the same name as the type. Default Assembly Namespace: ‘MyAssemblyNamespace’ namespace MyAssemblyNamespace { [ToolboxBitmap(typeof(MyCustomType))] public class MyCustomType : Component {…} } In the above scenario the runtime will look for a embedded bmp file of name MyCustomType.bmp in the project’s root directory. Note that the default namespace and the type’s namespace match. Example 2: If you want your icons in sub-directories then change the attribute like this: [ToolboxAttribute(typeof(MyCustomType), ‘ToolboxIcons.MyCustomType.bmp’)] or [ToolboxAttribute(typeof(MyCustomType), ‘ToolboxIcons.MyCustomType.ico’)] where the bmp or ico file (yap, now, when you explicitly specify the resource, you can use an ico file) is in a sub-directory called ‘ToolboxIcons’. Example 3: Sometimes your type’s namespace and the default assembly namespace may be unrelated, in which case you have to use a different type that has the same namespace as the default assembly namespace to scope the embedded image file. Default namespace: ‘MyAssemblyNamespace’ namespace MyAssemblyNamespace { public class SomeType {…} } namespace DifferentNamespace { // Using SomeType which has the same namespace as the default assembly namespace to scope the embedded resource. [ToolboxBitmap(typeof(SomeType), ‘MyCustomType.ico’)] public class MyCustomType {…} } In this case the runtime will look for the above resource at the top-most directory. If your icons were in a subdirectory named ‘ToolboxIcons’ then the attribute would look like this: [ToolboxBitmap(typeof(SomeType), ‘ToolboxIcons.MyCustomType.ico’)]
How do I disassemble a .net assembly (dll/exe) into the IL format?
You can covert a dll into it’s IL using the ildasm.exe utility. This is usually installed in: C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin If you want to run this utility via command line it would help if you add the above path to your Environment Path variable. Here is a sample command line that will disassemble a dll: ildasm MyFile.exe /output:MyFile.il You can reassemble the above il after making some minor changes via the ilasm utility. This is usually done to make some minor changes to an assembly like modifying the version no. of another assembly to which it links to.