Visual Basic Q&A

As a software engineer, I focus on .NET, especially asp.net, C#, WCF and so on, and I am also very interested in Search Engine Optimization.

Entries Tagged ‘Visual’

PRB: IntelliSense Features Do Not Appear in Visual Basic 6.0 for .NET COM Interop Components

Symptoms
When you register a Microsoft Visual Basic .NET Component for COM Interop in the registry by using the Register for COM Interop option in Visual Studio .NET, the IntelliSense features for the methods and properties of the classes do not appear in your Visual Basic 6.0 application. Also, you cannot use early binding to bind to a method or a property.
Resolution
This problem occurs in the following scenario:When you use the Register for COM Interop option, the Visual Studio .NET build process calls the Regasm tool with the /TLB and /CODEBASE options to register the .NET Component for COM Interop.When you call to the Regasm tool, Visual Studio .NET creates a type library and a COM Callable Wrapper (CCW) Interop assembly.The type library is registered and acts as a COM object to gain access to the .NET assembly.By default, the Regasm tool creates a type library that exposes a non-dual, empty IDispatch interface. Therefore, you cannot use early binding. If you do not use early binding, the IntelliSense features do not appear.

PRB: IntelliSense Features Do Not Appear in Visual Basic 6.0 for .NET COM Interop Components

Symptoms
When you register a Microsoft Visual Basic .NET Component for COM Interop in the registry by using the Register for COM Interop option in Visual Studio .NET, the IntelliSense features for the methods and properties of the classes do not appear in your Visual Basic 6.0 application. Also, you cannot use early binding to bind to a method or a property.
Resolution
This problem occurs in the following scenario:When you use the Register for COM Interop option, the Visual Studio .NET build process calls the Regasm tool with the /TLB and /CODEBASE options to register the .NET Component for COM Interop.When you call to the Regasm tool, Visual Studio .NET creates a type library and a COM Callable Wrapper (CCW) Interop assembly.The type library is registered and acts as a COM object to gain access to the .NET assembly.By default, the Regasm tool creates a type library that exposes a non-dual, empty IDispatch interface. Therefore, you cannot use early binding. If you do not use early binding, the IntelliSense features do not appear.

Compile error when you try to create an instance of System.Drawing.Imaging.PropertyItem

Symptoms
When you try to create an instance of a PropertyItem object in a project that you try to compile, you receive one of the following error messages:
Visual Basic .NET Error

‘System.Drawing.Imaging.PropertyItem.Private Overloads Sub New()’ is not accessible in this context because it is ‘Private’.Visual Basic 2005 Error

error BC30251: Type ‘System.Drawing.Imaging.PropertyItem’ has no constructors.Visual C# .NET Error

‘System.Drawing.Imaging.PropertyItem.PropertyItem()’ is inaccessible due to its protection level.Visual C# 2005 Error

error CS0143: The type ‘System.Drawing.Imaging.PropertyItem’ has no constructors defined
Resolution
A PropertyItem object encapsulates a metadata property to be included in an image file. A PropertyItem object is not intended to be used a stand-alone object. A PropertyItem object is intended to be used by classes that are derived from System.Drawing.Image. A PropertyItem object is used to retrieve and change the metadata of existing image files, not to create the metadata. Therefore, the PropertyItem class does not have a defined Public constructor, and you cannot create an instance of a PropertyItem object.

Certain WScript methods and properties not accessible in Visual Basic

Symptoms
WScript methods and properties cannot be created in the context of a Visual Basic object because they are part of the Windows Script Host (WSH) object model and must be hosted within a WScript object, which can only run in a WSH script.
Resolution
The WScript object is often confused with the automation objects in WSH, such as WScript.Shell and WScript.Network. These automation objects can exist outside of a WSH script, but they must be created in the ObjectContext of the hosting environment (in other words, Server.CreateObject for Microsoft Active Server Pages [ASP] or WScript.CreateObject for WSH or simply CreateObject for Microsoft Visual Basic). Take note of the differences in the following examples. WSH and ASP have intrinsic methods and properties that are not available outside of their respective environments (WSH – Wscript.Echo, ASP – Response.Write).
WSH Sample

Set objWSH = WScript.CreateObject(“WScript.Network”)WScript.Echo objWSH.UserdomainWScript.Echo objWSH.Username
ASP Sample

<%Set objWSH = Server.CreateObject(“WScript.Network”)Response.Write objWSH.UserdomainResponse.Write objWSH.Username%>
Visual Basic Sample

Set objWSH = CreateObject(“WScript.Network”)MsgBox objWSH.UserdomainMsgBox objWSH.Username
Unlike the examples above, which demonstrate WScript automation objects, the following example illustrates a WScript method that cannot be called by an ObjectContext.CreateObject method (note that WScript is not instantiated prior to calling WScript.Sleep and can only be used in a WSH script):

WScript.Sleep 1000objWSH = WScript.VersionobjWSH = WScript.ScriptFullName The following properties and methods are dependent on WSH to be running and will cause an error if they are accessed outside of the context of WSH:PropertiesApplicationArgumentsFullNameNamePathScriptFullNameScriptNameVersionMethodsEcho (for Visual Basic applications, use the MsgBox function or Debug.Print)Sleep (for Visual Basic applications, use the Sleep() Win32 API or SetWaitbleTimer() Win32 API [see "References"]).Popup (for Visual Basic applications, use the MsgBox function)The StdIn property, StdOut property, and StdErr property can be used from Visual Basic, but they require a console program. These can also be accessed by opening $CON as a file using the proper API.
All of the methods of WSH are duplicated by other API calls that Visual Basic can access.
Although the WSH object model cannot be accessed through Visual Basic objects, the same functionality is available through the Visual Basic language and the Win32 API.

BUG: You may receive a “Visual Basic internal compiler error” error message when you use the ADDHANDLER statement or the REMOVEHANDLER statement in Visual Studio .NET

Symptoms
You can pass an array as a base reference to the event in the ADDHANDLER statement or in the REMOVEHANDLER statement in your application. However, when you try to compile your application, the compiler stops responding instead of displaying compilation errors. When you close the Microsoft Visual Studio .NET IDE, you may receive the following error message:

Visual Basic .NET compiler is unable to recover from the following error: System Error &Hc0000005&(Visual Basic internal compiler error)
Save your work and restart Visual Studio .NET.
Resolution
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

BUG: When You Remove Visual C# .NET an Error May Occur If You Try to Install Visual Studio Tools for Office

Symptoms
When you try to install Microsoft Visual Studio Tools for the Microsoft Office System on a computer with Microsoft Visual Basic .NET Standard 2003 installed, you may receive the following error message:

Setup cannot detect the required version of Visual Studio .NET on this computer.Before you install this product, you must install a matching regional version of Visual Studio .NET 2003 or Visual Basic .NET 2003 Standard.
Resolution
This error may occur if all the following conditions are sequentially true:Visual Basic .NET Standard 2003 is installed on the computer.Microsoft Visual C# .NET Standard 2003 is installed onthe computer.Visual C# .NET Standard 2003 isremoved.You try to installVisual Studio Tools for Office.