Validate A Value Passed To The Property Before Setting The Property?
Apr 12, 2011
In on a section of my book about classes and properties. In this example, the author is attempting to show how you can validate a value passed to the property before setting the property. Looks like so far in this book, a couple of things have slipped past the editor, and I think this might be another one...Here's the example:
I've mainly been recording keystrok macros... I created visual basic code that allows the user of a template to hide table gridlines - which works fine. The code to show gridlines does not work if the table has only one row. Here is the code - it is getting "stuck" on the .LineWidth = wd
LineWidth050pt for a horizontal border, as there isn't one. I don't know how to change the code to not execute the command if a horizontal border line does not exist.
With Selection.tables(1) With .Borders(wdBorderLeft) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 5592405 [Code] .....
I'm trying to add validation to one of my class properties:[code]The value for the golfer's handicap comes from a oombo box on the form. Even if I have nothing set for this property at runtime, my validation doesn't work. I tried putting the If statement under Get instead of Set, and tried mHandicap = value after an Else in the If statement, but nothing seems to work. I'm working in the dark here and can't find anything suitable online. I was hoping to not go down the path of ReadOnly or WriteOnly properties as I'm not at that stage yet, but does this make a difference for my purposes here? Can anyone guide me as to what I'd need to do from this point? If I've got it right, you can add validation in the class and this means that you then don't need to repeat this validation in the form??
I have been searching for an easier way to validate the text property of my combobox.
Below is a background of what I am try to accomplish:
I have a from that contains many controls, mainly comboboxes that are bound to datatables. I have these set up in such a fashion as to when the user begins to type, the values begin to show and auto populate the combobox. This makes the selection process easier to select an actual value in the list. But, as we all know, you can lead a horse to water but you can't make him drink. Users still have the ability to type something that is not in the list. I do not want to allow them to leave the combobox until the have selected or typed a valid value from the list because I am building a SQL query to retrieve data for a later form. I don't want to lose the above mentioned functionality of being able to type it in. I currently have it working as follows, but there must be a more elegant way to do this.
I first populate my combo box like so:
CODE:
The part I don't like the most is that I feel like I should be able to use the list already loaded in the combobox data, but I can't figure out how to do it. So I end up having to reload it, this seem like a waste of time.
The problem is that when I try to set the property like this: myClass.Language = "English" The property is set to "English" and not to "<![CDATA[English]]>" which is what I want. What is the reason for that and how can I fix it? When placing a break point on End Set and use the Watch window to inspect the value of _Language after setting the property to "English" it remains "English" and doesn't change.
Given a simple class like this: Public Class clsOB Implements System.ComponentModel.INotifyPropertyChanged Private _Frequency As Double Private _Value As Double Public Event PropertyChanged(ByVal sender As Object, ByVal e As [Code] .....
And then I'd like to do something like this: Dim o As New clsOB(50, 30) o = 31
I am converting a 1.1 .NET web app to 3.5, and I've run into a bit of a jam.
One web control has a Property that sets the page title label on that web control.
End Property
When a page with the web control was loaded before, it would set the Property to a given string, like in ucHeader.PageTitle = "This is a string." Now, if I don't remove the lblPageTitle.Text = Value, I get a NullReference Exception.
I'm new to classes. In my Who wants to be a Millionaire application, I have a Lifeline class and I create three instances of it - FF, PAF and ATA (50/50, Phone a Friend and Ask the Audience). Something I do with a lifeline is put a cross over its logo, hence the need for a centrepoint property, which marks the centre of the cross on a form.
Public Class Lifeline Private ptCentrePoint As Point Public Property CentrePoint() As Point Get CentrePoint = ptCentrePoint [Code] .....
What happens is that at the "Call Form2.DrawCross(Form2.CentrePoint)" line, the tooltip shows that the FF object's centrepoint property isn't set (as I thought it would be by " FF.CentrePoint = tmpPoint").
Protected Sub grdSearch_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdSearch.SelectedIndexChanged TimeOff.Where = "UserName=""" & grdSearch.SelectedValue & """" End Sub
Doing so causes this error, 'UserName' could not be resolved in the current scope or context. Make sure that all referenced variables are in scope, that required schemas are loaded, and that namespaces are referenced correctly. Near simple identifier, line 6, column 1.
The datasource works fine before the where property is set.Update: I found the issue but I still don't get it.Adding it. in the where clause solves the issue. Like this,
I am using a user control using vb.net. It include the program to retrieve the values from database while giving the paramers. When I set the property from my main program i am getting an error "Invalid attempt to call Read when reader is closed." When i gone to the online help i got the message as follows "System.InvalidOperationException (.NET Framework 4)The exception that is thrown when a method call is invalid for the object's current state. InvalidOperationException is used in cases when the failure to invoke a method is caused by reasons other than invalid arguments. For example, InvalidOperationException is thrown by IEnumerator.MoveNext if objects of a collection are modified after the enumerator is created, or ResourceSet.GetString if the resource set is closed before the method call is made. If the method invocation failure is due to invalid arguments, then ArgumentException or one of its derived classes, ArgumentNullException or ArgumentOutOfRangeException, should be thrown instead.[code]
I am programatically creating instance of usercontrol as shown below
[code]...
I have two public properties in my usercontorl like clerkName and RespName. How can I set those values in the above code. Intellisense is not showing ClerkName and respName Properties.
I'm reading in a configuration file which is simply a txt file that configures my Com port and sets some directories. It's basically for the end user to set the interface. I want to give the user the ability to change backcolor properties on my NumbericUpDown property. So when I read in the Config.txt file the end user can change coloring on the General Form. In this case the NumbericUpDown. How to assign a variable for color from my string (from my txt file) that I read in.
Im currently debugging my application to found out why it's running a bit slow, when I put breakpoint where i populate one of the application combobox it's run fast but after i populate it and when I'm trying to set the its selectedindex to zero the program halt for about 2 second.. this is the line where the program get stuck for 2 seconds:
I am creating a customised version of the ListView control and there are several of the properties that a ListView has that I would like to be set to a different value to the ListView default when a user goes to use my user control.
From what I've found there seems to be a number of people suggesting just set them in the constructor, but to the best of my knowledge that would just mean that the user would not be able to change the properties in the PropertyGrid in the VS IDE.I assume this is probably something extremely simple that I have overlooked.
I have a single form that I would like to move across the screen with my VB program. Of course it's simple to set the location X and Y property for compile time using the properties tab, but I want the form to move as the program runschanging the coordinates within a for-next loop.I can easily get the X and Y coordinates of the form within my program by using X = me.location where X has been dimmed as type point.console.writeline(X) will appear as {X=20, Y=40}. for example
.From = New MailAddress("Me@MySite.com", "Big Mike")This does not;
Dim AddressFrom As String = "Me@MySite.com" Dim FromDisplayName As String = "Big Mike" .From = New MailAddress(AddressFrom , FromDisplayName)
I receive the error; The specified string is not in the form required for an e-mail address.I would REALLY like to use variables here so that I can read these two pieces of data from My.Settings. I've been searching for the answer for hours and I'm stumped.
Trying to set a Combo Box RowSource to a field in a table that contains the choices separated by semi colons. Have tried both a query and a DLookup but it results in displaying the full contents of the table field, e.g. "10;12;14;16" rather than giving me the usual selection list
VS 2008, vb.net, Win7 development machine. I've developed a Windows application with several different forms, and am using the My.Settings feature. This is the first time that I have used this feature. For each form, I have set the form's property binding 'location' property to an entry in 'settings' of My Project settings page of the VS 2008 development environment. The settings are set to user scope.
1.) Do I need to add any code to my application to make the settings work, or is it sufficient that I have the "Save My.Settings on shutdown" set to true? 2.) When I create my setup to install the application, what settings file (app.config?) do I install to the user's machine, and what folder should it be installed to?
On my form I have a "Combobox1" that pulls a list from an access table. I also have a "DataGridView1" that pulls data from another access table.
I am trying to set the "DataSource" property of the "DataGridView1" after clicking a button, which pulls the "Text" property from the "ComboBox1".
ComboBox1.Text will always equal DataGridView1.DataSource as a text string.
I researched the Get/Set command, but it does not make sense to my specific application. I have read countless articles online for weeks, but I have now taken the next step.
When I drag a dataset onto a form (as details), is there a way in which the textFields maxLength property is automatically set with the width within the actual table. Or do i have to select each textBox and enter it manually?
We've recently moved to Team System and now a remote team needs access to our source. However, they use a different IP address to access the Team System server, and whenever they try to open a project, they are prompted to check out and change the project. It seems to be the 'SccAuxPath' property which is the problem.
I have set the Visibility property of the main window to Hidden and added the following in Window_Loaded: private void Window_Loaded(object sender, RoutedEventArgs e){ this.Visibility = System.Windows.Visibility.Visible; } But it doesn't show up the Window.
I have done some searching, but am still having trouble trying to set the browsable attribute of property to false at runtime in order to hide in the properties grid control (based on certain conditions).
I have a page that is based on a Master Page. The page has AJAX contolled tabs and on one tab I have 2 panels, each with 1 button. Only 1 panel is visible at a time. I am trying to get the button on the visible panel to be the DefaultButton so that when Enter is pressed the click event is fired off. The issue that I am having is that I get this error no matter what I try: The DefaultButton of 'form1' must be the ID of a control of type IButtonControl.I have tried setting the Default Button property of the panel to the buttons client id and to its unique id.
I have included a Date and Time Picker Control in oen of my MS Access Forms and want to set its value on the form open event. However, when I try to set the Value property I get the following error message :