Showing posts with label VB Tips n Tricks. Show all posts
Showing posts with label VB Tips n Tricks. Show all posts

Friday, December 7, 2007

Accessing Controls !

You might have had some problem in the past in accessing the controls on the Main form, where you want to set properties of controls on your Main form if you are thinking to instantiate the object of Main class and then setting properties of controls then you are thinking wrong because by following this way you are actually creating a new instance of the form and not accessing the instance which is already in Memory. So, in order to solve this problem the following trick will do the work for you.

In your form2 declare a Class level variable of form type e.g.

Dim oForm as Form

now in the Load event of form2 just make this equal to the 'ActiveForm' property of 'Form1' e.g.

oForm = Form1.ActiveForm

Now just enter the following code in the Button Click event handler or in whatever event you want to use in order to add items to the Listbox or whatever you want to do with the control on the form e.g.

Private Sub btnOK_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnOK.Click

CType(oForm, Form1).ListBox1.Items.Add(Me.TextBox1.Text)
'Like this you can now access any control on the Form
'Who's instance is already in memory.

End Sub

I hope this will help you !

Trace Your Code Effectively !

Here is quick and nice trick to trace your code and append the values in the Textbox. For this we have to design a class which inherits from 'TraceListener' Class then we must override the 'Write' and 'WriteLine' method to give it our own logic. So, here it is:

Public Class TraceLogSupport
......Inherits TraceListener

......Private _Targettextbox As RichTextBox
......Private _Targetfrm As Form

......Public Sub New()
............MyBase.New()
............'default constructor
......End Sub

......Public Sub New(ByVal txtbox As RichTextBox, ByVal frm As Form)
............MyBase.New()

......If txtbox IsNot Nothing Then

............_Targettextbox = txtbox

......Else

............MyBase.Dispose()
............Throw New ArgumentNullException("Must specify which Textbox to append text to.")

......End If

......_Targetfrm = frm

......End Sub

......Delegate Sub SetTextCallBack(ByVal text As String)

......Public Overloads Overrides Sub Write(ByVal message As String)
............SetText(message)
......End Sub

......Public Overloads Overrides Sub WriteLine(ByVal message As String)
............SetText(message + Environment.NewLine)
......End Sub

......'Just to make it thread safe.
......Sub SetText(ByVal txt As String)
............If Me._Targettextbox.InvokeRequired Then
..................Dim stcallback As New SetTextCallBack(AddressOf SetText)
.................._Targetfrm.Invoke(stcallback, New Object() {txt})
......Else
..................Me._Targettextbox.AppendText(txt)
......End If

......End Sub

End Class

Now just instantiate the object of this class and add it to Trace's or Debug's listener's collection (Both share the same Listener's collection). Trace and Debug classes can be accessed from anywhere in your code in this way you can easily display the result of your code execution. This is just to make your execution live !

Sunday, December 2, 2007

10 Quick Tips for VB Developers !

Generics. The Generics class in .NET 2.0 gives developers the flexibility to write methods once and let the .NET Framework handle type issues. There is no boxing of objects or casting of exceptions, which improves performance, and compile errors show up earlier in the coding process.

Debugger ToolTips. Debugging in Visual Basic 2003 was "pretty vanilla," as developers had to go to the Watch window to find it and it didn't say much. In VB 2005, users can expand the box, to see the properties of a particular type, or hold down Ctrl to male the box transparent.

Edit and Continue. Speaking of debugging, this feature lets developers edit code while they're debugging it. "You don't have to keep stop-starting all the time. That can be a very laborious process".

The My namespace. Along with giving developers a place to find and store "the stuff you're going to do 90% of the time," the My namespace lets developers do things like retrieve information with a single line of code -- My.Computer.FileSystem.ReadAllText(filename.txt) --

Templates. These are stored as zip files containing an XML file, a VB file set to transport, a designer file and all other files related to the template. To add a template, just go to "Add New Item" and the appropriate file from the template will appear there.

Snap lines. This graphical form-building tool, likely familiar to designers, gives developers granular control, such as alignment to the top left of a form or to existing controls.

Application settings. With this feature, a developer can name a pointer variable, indicating the location of a stored form. Thus the values of a property, set up once, can be used in many places.

Renaming. By right-clicking on a code identifier like a class name, field or type, a developer can rename it and update all calls and references to that identifier.

Refactoring. This functionality is not available from Microsoft, but third-party vendors like Developer Express.

Snippets. Visual Basic 2005 comes with 500 pre-installed code snippets, categorized by task. They are accessible by right-clicking, by the keyboard shortcut "Tab+?" or by typing the individual snippet's shortcut. Developers can also create snippets for the custom code they use regularly.