|

Introduction
The great thing about OOP and .NET is that you should never have to find yourself coding the same thing over and over again. Reusability is the name of the game. So when I recently found myself in the vicious cycle of re-coding the same interface component, I thought that surely there was a better way.
Background
I frequently need to create little "wizards" and other applications that work with files and folders. The "industry standard" way of locating these resources is to put a TextBox on the page, and a little icon of a folder next to that, and use the icon folder to launch the browse dialog, storing the results in the TextBox. Surely, you've seen this a thousand times, and if you were building a web application, there is already an object to do this. Not so in Windows Forms, however.
Every time I needed to use this functionality, I had to:
- Put some
Panels on the page to host the TextBox and PictureBox (this makes it possible to dock them correctly).
- Add the
TextBox, Label and PictureBox controls.
- Align the
PictureBox correctly (it never lines up correctly with the TextBox, by default), and the Label as well if it was placed to the left.
- Locate the folder image.
- Add the
FileDialog and FolderDialog objects.
- Wire up the
FileDialog and FolderDialog to the TextBox and PictureBox as needed.
- Recode the Drag-n-Drop for each
TextBox.
- Recode the function to strip the filename from the path if I needed it.
Well, that's a lot of coding to do over and over. And I got tired of it. So I created the BrowseField.
Features of the BrowseField
- Allows you to drop a single control on the page, eliminating all of the steps above.
- Has a property called
BrowseType that allows you to specify whether it should spawn a File or Folder dialog.
CaptionStyle property determines if the Label should appear above, to the left, or out-dented (Wizard 97 style) from the TextBox.
- Is already setup to accept drag-n-drop from Windows Explorer.
- Can simply enter the path by hand.
- Properly docks and resizes without any extra work.
- If entering files, you can specify the
FilenameOnly() option which will truncate the file path down to just the filename.
- You can query the
FileName() property, which will also give you filename while leaving the full path intact.
- You have full control over the appearance - set the text and/or
Label fonts as needed, or change the border style of the TextBox, etc.
- Exposes the
TextChanged() event.
Using the BrowseField control is as simple as dropping it onto a page, setting the properties up the way you like them in the IDE, and then querying the Text value for the result. Or, you could set the properties programmatically like this: BrowseField1.Caption = "This is my label text"
BrowseField1.CaptionStyle = BrowseField.CaptionStyles.Top
BrowseField1.FileDialogFilter = "All Files (*.*)|*.*"
BrowseField1.FileDialogFilterIndex = 1
BrowseField1.BrowseType = BrowseField.BrowseTypes.File
BrowseField1.BorderStyle = BorderStyle.FixedSingle
Note that you do not need to setup any code to display the dialog boxes, handle drag and drop operations, or handle resizing operations. For the most part, any changes you make are purely cosmetic. It just works.
BrowseList
Shortly after releasing the BrowseField control, I realized that I often used a ListBox control in much the same way - to gather multiple folder and file names. This is even more of a hassle than using the TextBox, as I usually add several PictureBox controls used to Add, Delete and Edit the paths entered. Checks for duplicate paths are needed as well. And in my opinion, some critical events were left out of the ListBox control - ItemAdded(), ItemRemoved(), and ItemChanged(). These needed to be implemented too.
Features of BrowseList
- Has all the features of
BrowseField (except for the FileName property).
- Adds the
ItemAdded(), ItemRemoved() and ItemChanged() events.
- Allows for multiple items to be added (either using the dialogue or drag-n-drop), by default.
- Option to allow hand editing of list items (enabled by default).
I think I should also mention that both controls are written in VB.NET. However, as you already know, that won't stop it from working with C# or any other .NET compliant language. There isn't a great deal of commenting in the code - as this is really more of a tool than a tutorial, I didn't see the need for it. Also, since these are composite controls, they are very simple in nature.
Licensing
I always like to list my projects as "ThankYouWare". That is, if you use them, please send me a "Thank You" email letting me know if you like them, and any features or improvements you'd like to see. The controls are open source, you may modify them at will (just don't ask me to fix your modified code). If you redistribute the original or modified code, please credit me somewhere, even if it's just in the code comments.
Breaking Changes
While I hate to make "breaking changes" in controls, I thought it was necessary with this control. The original versions of these controls had a minimal interface, and instead of providing access to the child controls through shadowed properties, I simply exposed the child controls directly. This worked, and certainly exposed every aspect of the child controls to the programmer, but it allowed the programmer to "break" the functionality of the code, and wasn't VS.NET-IDE friendly. (Changes made in the properties grid of the IDE tended to disappear randomly.) Frankly, it was just poor programming.
In version 2, all the important properties and events have been exposed directly. Now the programmer cannot "break" the control's built-in validation and security. It also means that the controls play nice with the IDE. As well, the Caption (Label) is entirely new.
Known Problems
There is a funny little "bug" in the resizing of the controls sometimes. For example, if you open the sample project and change drag the form's width so that it is very small, then re-expand it, the right side of the browse controls goes off the edge of the form. I'm not sure why this is taking place. Also, while very minor, there are icons associated with the controls, but they don't appear to be showing up. If anyone knows of a fix to these problems, I'll be happy to update the code and credit you in the code as well. Thanks.
History
- Oct. 15 2004 - Added the
BrowseList control.
- Jan. 25 2005 - Both controls rewritten and released as version 2.
| You must Sign In to use this message board. |
|
| | Msgs 1 to 25 of 35 (Total in Forum: 35) (Refresh) | FirstPrevNext |
|
|
 |
|
|
I am building a web application and would like to get the pathname of a particular folder? How do I do this?
Manav Malhotra
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
I am also interested in using this control in a web application. How to do this?
Manav if you find something do please let me also know.
Thanks Jagadish
I receive every breath i breathe.
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
I really like this dll, but was wondering if it was possible to have the buttons as an optional separate control (So that you could hide the buttons and instead use a control to have the buttons in another location, or along the top, etc.). I was also wondering if it was possible to change the images for the buttons. I'm more curious than anything.
Thanks again for a great dll. This is a godsend.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I don't remember anything being built-in to support this, however the source code is included and is license free, so please feel free to modify it for your needs. Maybe I'll revisit this control someday and bring it up to 2.0 since it still seems to be popular.
-Todd Davis (toddhd@gmail.com)
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I read the discussion by FauthD dated 12:07 18 Oct '05 about the visibility of the TextChanged event. I have the same problem.
I don't completely follow Fauth's explanation of the workaround. I would like access to the event. Any advice?
D.D. "Skip" Snyder 671 Crescent Ct. Grand Junction, CO 81505 skips@bresnan.net
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I downloaded the source, compiled it, copied the dll to my source, and added a reference to it.
So how do I get it to show up on the toolbox so I can use it?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Right click on your toolbox in VS (If you want to, make a new tab) Choose to add items Choose Browse Browse to the dll OK your way through The components will now show up in your toolbox Drag and drop them on the form
-Todd Davis (toddhd@gmail.com)
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
I've notice that after browse for folder or for file, the current Application directory is changed to the selected folder.
To solve this problem, i've added two lines of code, in the function btnSearch_Click
At the start of the function
string sCurDir = Directory.GetCurrentDirectory ();
And, at the end of the function
Directory.SetCurrentDirectory ( sCurDir );
Regards
|
| Sign In·View Thread·PermaLink | 1.00/5 (1 vote) |
|
|
|
 |
|
|
Hi, in my case I need access to the list box and as a QnDirty solution I made it public. I think it would be better to expose a more general interface for this, but I am not a basic guy (..,C,CPP,MFC and now a bloddy beginner in C#)
Many regards, Dieter 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi, I needed an event that fires after all items have been added. So I created the event ItemsAdded and called RaiseEvent for it after all loops containing the event ItemAdded, The code is to much to post here (few places), but you get the idea. @Todd: send me a p-mail, then I can mail you the files.. I also added the "preloading current path/file" extention I did for the BrowseField.
Thanks for this class, Dieter 
|
| Sign In·View Thread·PermaLink | 2.00/5 (1 vote) |
|
|
|
 |
|
|
Hi, in single slection mode you will get an exception (out of range). The reason is that the SelectedItem is invalid in the second time of the loop. (the count does not get decremented) I added an exit in case it is single selection mode. Warning: I had no time to check the other selection modes.
Private Sub PictureDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureDelete.Click While ListBox1.SelectedItems.Count > 0 ListBox1.Items.Remove(ListBox1.SelectedItem) RaiseEvent ItemRemoved(Me, e) If (ListBox1.SelectionMode = SelectionMode.One) Then Exit While End If End While End Sub
Good luck, Dieter 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi, the event does not show up in the event list of the form. it has something to do with the name of the event. Renaming to xTextChanged for example does work.
As a workaround I build this event in. it is even better for my app:
Public Event TextValid(ByVal sender As Object, ByVal e As EventArgs)
in Textbox1_TextChanged: If TextIsValid(Text) Then RaiseEvent TextValid(Me, New EventArgs) End If
and the whole sub: Private Sub Textbox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If _BrowseType = BrowseTypes.File And _FilenameOnly And Text.IndexOf("\") > -1 Then Text = Text.Substring(Text.LastIndexOf("\") + 1) RaiseEvent TextChanged(sender, e)
If TextIsValid(Text) Then RaiseEvent TextValid(Me, New EventArgs) End If
End Sub
Thanks for this class! Dieter 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Hi, all my programs must be user friendly. One part of that is that paths and filenames must be stored in registry and be shown the next time. For that I use the iProfile class from Alvaro Mendez (http://www.codeproject.com/csharp/ReadWriteXmlIni.asp). A small change is required to to the BrowseField to expose the stored values to the user: I just added two lines (one for files, one for folders) before the control actually gets opened: OpenFileDialog1.FileName = TextBox1.Text FolderBrowserDialog1.SelectedPath = TextBox1.Text
Not sure if that will show nice in the forum: Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click If _BrowseType = BrowseTypes.File Then OpenFileDialog1.FileName = TextBox1.Text If OpenFileDialog1.ShowDialog() = DialogResult.OK Then TextBox1.Text = OpenFileDialog1.FileName End If Else FolderBrowserDialog1.SelectedPath = TextBox1.Text If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then TextBox1.Text = FolderBrowserDialog1.SelectedPath End If End If End Sub
Thanks for this class! Dieter 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
  Nice control.
The icon only shows up if you add it to your toolbox from the DLL. It will not show up in the My User Controls section.
Here is the code with the "Caption" fix, tooltip, and file validation. Add a tooltip (Tooltip1) to the form, then you can copy the code.
Imports System.ComponentModel
Public Class BrowseField Inherits System.Windows.Forms.UserControl
#Region " Windows Form Designer generated code "
Public Sub New() MyBase.New()
'This call is required by the Windows Form Designer. InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'UserControl1 overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub
'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents PanelTop As System.Windows.Forms.Panel Friend WithEvents PanelBottom As System.Windows.Forms.Panel Friend WithEvents PanelIndent As System.Windows.Forms.Panel Friend WithEvents PanelPicture As System.Windows.Forms.Panel Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents TextBox1 As System.Windows.Forms.TextBox Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog Friend WithEvents FolderBrowserDialog1 As System.Windows.Forms.FolderBrowserDialog Friend WithEvents LabelTop As System.Windows.Forms.Label Friend WithEvents LabelLeft As System.Windows.Forms.Label Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(BrowseField)) Me.PanelTop = New System.Windows.Forms.Panel Me.LabelTop = New System.Windows.Forms.Label Me.PanelBottom = New System.Windows.Forms.Panel Me.PanelPicture = New System.Windows.Forms.Panel Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.TextBox1 = New System.Windows.Forms.TextBox Me.PanelIndent = New System.Windows.Forms.Panel Me.LabelLeft = New System.Windows.Forms.Label Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) Me.PanelTop.SuspendLayout() Me.PanelBottom.SuspendLayout() Me.PanelPicture.SuspendLayout() Me.PanelIndent.SuspendLayout() Me.SuspendLayout() ' 'PanelTop ' Me.PanelTop.Controls.Add(Me.LabelTop) Me.PanelTop.Dock = System.Windows.Forms.DockStyle.Top Me.PanelTop.Location = New System.Drawing.Point(0, 0) Me.PanelTop.Name = "PanelTop" Me.PanelTop.Size = New System.Drawing.Size(288, 20) Me.PanelTop.TabIndex = 0 ' 'LabelTop ' Me.LabelTop.AutoSize = True Me.LabelTop.Location = New System.Drawing.Point(0, 2) Me.LabelTop.Name = "LabelTop" Me.LabelTop.Size = New System.Drawing.Size(0, 16) Me.LabelTop.TabIndex = 1 ' 'PanelBottom ' Me.PanelBottom.Controls.Add(Me.PanelPicture) Me.PanelBottom.Controls.Add(Me.TextBox1) Me.PanelBottom.Controls.Add(Me.PanelIndent) Me.PanelBottom.Dock = System.Windows.Forms.DockStyle.Fill Me.PanelBottom.Location = New System.Drawing.Point(0, 20) Me.PanelBottom.Name = "PanelBottom" Me.PanelBottom.Size = New System.Drawing.Size(288, 20) Me.PanelBottom.TabIndex = 1 ' 'PanelPicture ' Me.PanelPicture.Controls.Add(Me.PictureBox1) Me.PanelPicture.Dock = System.Windows.Forms.DockStyle.Right Me.PanelPicture.Location = New System.Drawing.Point(264, 0) Me.PanelPicture.Name = "PanelPicture" Me.PanelPicture.Size = New System.Drawing.Size(24, 20) Me.PanelPicture.TabIndex = 1 ' 'PictureBox1 ' Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"), System.Drawing.Image) Me.PictureBox1.Location = New System.Drawing.Point(3, 3) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(16, 16) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False Me.ToolTip1.SetToolTip(Me.PictureBox1, "Browse") ' 'TextBox1 ' Me.TextBox1.AllowDrop = True Me.TextBox1.Dock = System.Windows.Forms.DockStyle.Fill Me.TextBox1.Location = New System.Drawing.Point(0, 0) Me.TextBox1.Name = "TextBox1" Me.TextBox1.Size = New System.Drawing.Size(288, 20) Me.TextBox1.TabIndex = 2 Me.TextBox1.Text = "" ' 'PanelIndent ' Me.PanelIndent.Controls.Add(Me.LabelLeft) Me.PanelIndent.Dock = System.Windows.Forms.DockStyle.Left Me.PanelIndent.Location = New System.Drawing.Point(0, 0) Me.PanelIndent.Name = "PanelIndent" Me.PanelIndent.Size = New System.Drawing.Size(0, 20) Me.PanelIndent.TabIndex = 0 ' 'LabelLeft ' Me.LabelLeft.AutoSize = True Me.LabelLeft.Location = New System.Drawing.Point(0, 3) Me.LabelLeft.Name = "LabelLeft" Me.LabelLeft.Size = New System.Drawing.Size(0, 16) Me.LabelLeft.TabIndex = 2 Me.LabelLeft.Visible = False ' 'BrowseField ' Me.Controls.Add(Me.PanelBottom) Me.Controls.Add(Me.PanelTop) Me.Name = "BrowseField" Me.Size = New System.Drawing.Size(288, 40) Me.PanelTop.ResumeLayout(False) Me.PanelBottom.ResumeLayout(False) Me.PanelPicture.ResumeLayout(False) Me.PanelIndent.ResumeLayout(False) Me.ResumeLayout(False)
End Sub
#End Region
#Region " Variable Declarations" Public Enum CaptionStyles Top Left OutDent End Enum Enum BrowseTypes File Folder End Enum Public Enum ValidationModes None OnLoseFocus End Enum
Private _validationMode As ValidationModes = ValidationModes.None Private _captionStyle As CaptionStyles = CaptionStyles.Top Private _outdent As Integer = 20 Private _BrowseType As BrowseTypes = BrowseTypes.Folder Private _FilenameOnly As Boolean = False #End Region
#Region "Events" 'Declare the DrawingModeChanged Event Public Shadows Event TextChanged(ByVal sender As Object, ByVal ev As EventArgs) Public Event TextInvalid(ByVal sender As Object, ByVal e As EventArgs) #End Region
#Region " Custom Properties" <Category("Behavior"), DefaultValue(""), Description("Sets the initial directory for the file or folder browser dialog")> _ Public Property InitialDirectoy() As String Get Return OpenFileDialog1.InitialDirectory End Get Set(ByVal Value As String) OpenFileDialog1.InitialDirectory = Value FolderBrowserDialog1.SelectedPath = Value End Set End Property
<Category("Appearance"), DefaultValue(CaptionStyles.Top), Description("Describes where the caption label is positioned relative to the textbox")> _ Public Property CaptionStyle() As CaptionStyles Get Return _captionStyle End Get Set(ByVal Value As CaptionStyles) _captionStyle = Value Redraw() End Set End Property
<Category("Appearance"), DefaultValue(""), Description("The text value of the caption label")> _ Public Property Caption() As String Get Return LabelTop.Text End Get Set(ByVal Value As String) LabelTop.Text = Value LabelLeft.Text = Value Redraw() End Set End Property
<Category("Appearance"), DefaultValue(20), Description("The amount of space the label is outdented from the textbox, for Wizard 97 applications.")> _ Public Property OutDent() As Integer Get Return _outdent End Get Set(ByVal Value As Integer) _outdent = Value Redraw() End Set End Property
<Category("Behavior"), DefaultValue(ValidationModes.None), Description("When to validate the text and raise the InvalidText event.")> _ Public Property ValidationMode() As ValidationModes Get Return _validationMode End Get Set(ByVal Value As ValidationModes) _validationMode = Value End Set End Property
<Category("Behavior"), DefaultValue(BrowseTypes.File), Description("Specifies the type of search to be done, file or folder.")> _ Public Property BrowseType() As BrowseTypes Get Return _BrowseType End Get Set(ByVal Value As BrowseTypes) _BrowseType = Value End Set End Property
<Category("Appearance"), DefaultValue(""), Description("If a path to a file is selected, this returns only the file name.")> _ Public ReadOnly Property FileName() As String Get If _BrowseType = BrowseTypes.File And Text.IndexOf("\") > -1 Then Return Text.Substring(Text.LastIndexOf("\") + 1) Else Return "" End If End Get End Property
<Category("Behavior"), DefaultValue(False), Description("If set to true and in file mode, the text will reflect only the selected filename.")> _ Public Property FilenameOnly() As Boolean Get Return _FilenameOnly End Get Set(ByVal Value As Boolean) _FilenameOnly = Value End Set End Property #End Region
#Region "Custom Procedures" ''' ----------------------------------------------------------------------------- ''' <summary> ''' Validates that the text entered is of the correct BrowseType (file or folder) ''' and exists on the drive. ''' </summary> ''' <param name="FileNameOnlyPath">Path to use if in FileNameOnlyMode. Include a trailing "\" or "/".</param> ''' <returns>True if valid, otherwise false.</returns> ''' <remarks> ''' </remarks> ''' <history> ''' [robertf] 3/4/2005 Created ''' </history> ''' ----------------------------------------------------------------------------- Public Function TextIsValid(ByVal FileNameOnlyPath As String) As Boolean Select Case Me.BrowseType Case BrowseTypes.File FileNameOnlyPath &= Me.Text Return System.IO.File.Exists(FileNameOnlyPath) Case BrowseTypes.Folder Return System.IO.Directory.Exists(Me.Text) End Select End Function
''' ----------------------------------------------------------------------------- ''' <summary> ''' Validates that the text entered is of the correct BrowseType (file or folder) ''' and exists on the drive. ''' </summary> ''' <returns>True if valid, otherwise false.</returns> ''' <remarks> ''' </remarks> ''' <history> ''' [robertf] 3/4/2005 Created ''' </history> ''' ----------------------------------------------------------------------------- ''' Public Function TextIsValid() As Boolean Return TextIsValid("") End Function
#End Region
#Region " Exposed Child Control Properties"
<Category("Behavior"), DefaultValue(System.Windows.Forms.CharacterCasing.Normal), Description("Indicates if all characters should be left alone or converted to uppercase or lowercase.")> _ Public Property CharacterCasing() As System.Windows.Forms.CharacterCasing Get Return TextBox1.CharacterCasing End Get Set(ByVal Value As System.Windows.Forms.CharacterCasing) TextBox1.CharacterCasing = Value End Set End Property
<Browsable(False), Category("Appearance"), Description("The length of the currently selected text.")> _ Public Property SelectionLength() As System.Int32 Get Return TextBox1.SelectionLength End Get Set(ByVal Value As System.Int32) TextBox1.SelectionLength = Value End Set End Property
<Category("Behavior"), DefaultValue(True), Description("Determines if the text can be edited by hand.")> _ Public Property EditEnabled() As System.Boolean Get Return TextBox1.Enabled End Get Set(ByVal Value As System.Boolean) TextBox1.Enabled = Value End Set End Property
<Category("Behavior"), DefaultValue(""), Description("Indicates the character to display for password input for single-line edit controls.")> _ Public Property PasswordChar() As System.Char Get Return TextBox1.PasswordChar End Get Set(ByVal Value As System.Char) TextBox1.PasswordChar = Value End Set End Property
<Category("Appearance"), DefaultValue(System.Windows.Forms.ScrollBars.None), Description("Indicates, for multi-line edit controls, which scroll bars will be shown for this control.")> _ Public Property ScrollBars() As System.Windows.Forms.ScrollBars Get Return TextBox1.ScrollBars End Get Set(ByVal Value As System.Windows.Forms.ScrollBars) TextBox1.ScrollBars = Value End Set End Property
<Category("Appearance"), DefaultValue(""), Browsable(True), Description("The text value of the control.")> _ Public Shadows Property Text() As System.String Get Return TextBox1.Text End Get Set(ByVal Value As System.String) TextBox1.Text = Value End Set End Property
<Category("Appearance"), DefaultValue(System.Windows.Forms.HorizontalAlignment.Left), Description("Indicates how the text should be aligned for edit controls.")> _ Public Property TextAlign() As System.Windows.Forms.HorizontalAlignment Get Return TextBox1.TextAlign End Get Set(ByVal Value As System.Windows.Forms.HorizontalAlignment) TextBox1.TextAlign = Value End Set End Property
<Category("Appearance"), Description("The background color used to display text and graphics in the control.")> _ Public Property TextBackColor() As System.Drawing.Color Get Return TextBox1.BackColor End Get Set(ByVal Value As System.Drawing.Color) TextBox1.BackColor = Value End Set End Property
<Category("Appearance"), DefaultValue(System.Windows.Forms.BorderStyle.Fixed3D), Description("Indicates whether or not the edit control should have a border.")> _ Public Property BorderStyle() As System.Windows.Forms.BorderStyle Get Return TextBox1.BorderStyle End Get Set(ByVal Value As System.Windows.Forms.BorderStyle) TextBox1.BorderStyle = Value End Set End Property
<Browsable(False), DefaultValue(True), Category("Behavior"), Description("Indicates if the edit control can undo the previous action.")> _ Public ReadOnly Property CanUndo() As System.Boolean Get Return TextBox1.CanUndo End Get End Property
<Category("Appearance"), DefaultValue(System.Drawing.KnownColor.WindowText), Description("The foreground color used to display text in the control.")> _ Public Property TextForeColor() As System.Drawing.Color Get Return TextBox1.ForeColor End Get Set(ByVal Value As System.Drawing.Color) TextBox1.ForeColor = Value End Set End Property
<Category("Appearance"), DefaultValue(System.Drawing.KnownColor.WindowText), Description("The foreground color used to display the caption.")> _ Public Property CaptionForeColor() As System.Drawing.Color Get Return LabelTop.ForeColor End Get Set(ByVal Value As System.Drawing.Color) LabelTop.ForeColor = Value LabelLeft.ForeColor = Value End Set End Property
<Category("Behavior"), Description("Indicates that the selection should be hidden when the edit control loses focus.")> _ Public Property HideSelection() As System.Boolean Get Return TextBox1.HideSelection End Get Set(ByVal Value As System.Boolean) TextBox1.HideSelection = Value End Set End Property
<Category("Behavior"), DefaultValue(32767), Description("Specifies the maximum number of characters that can be entered into the edit control.")> _ Public Property MaxLength() As System.Int32 Get Return TextBox1.MaxLength End Get Set(ByVal Value As System.Int32) TextBox1.MaxLength = Value End Set End Property
<Category("Appearance"), DefaultValue(""), Description("Tooltip caption for the textbox.")> _ Public Property Tooltip() As String Get Return Me.ToolTip1.GetToolTip(Me.TextBox1) End Get Set(ByVal Value As String) Me.ToolTip1.SetToolTip(Me.TextBox1, Value) End Set End Property
<Category("Appearance"), DefaultValue("Browse"), Description("Tooltip caption for the folder icon.")> _ Public Property BrowseIconTooltip() As String Get Return Me.ToolTip1.GetToolTip(Me.PictureBox1) End Get Set(ByVal Value As String) Me.ToolTip1.SetToolTip(Me.PictureBox1, Value) End Set End Property
<Browsable(False), DefaultValue(False), Category("Behavior"), Description("Indicates if the text in the edit control has been modified by the user.")> _ Public Property Modified() As System.Boolean Get Return TextBox1.Modified End Get Set(ByVal Value As System.Boolean) TextBox1.Modified = Value End Set End Property
<Category("Behavior"), Description("Controls whether the text in the edit control can be changed or not.")> _ Public Property [ReadOnly]() As System.Boolean Get Return TextBox1.ReadOnly End Get Set(ByVal Value As System.Boolean) TextBox1.ReadOnly = Value End Set End Property
<Browsable(False), DefaultValue(""), Category("Appearance"), Description("The currently selected text.")> _ Public Property SelectedText() As System.String Get If Not TextBox1.SelectedText Is Nothing Then Return TextBox1.SelectedText
| | | | | |