.net - Make A Class Property Behave Like The Checked Property On RadioButton?
Jun 1, 2012
I have a very simple class that holds a few public properties - ID, Text, Colour, etc. and a Boolean called 'SelectedItem'. Just like the Checked property on RadioButtons, only one item can have its SelectedItem property set to True within a particular group. Note: there will be several separate groups (lists), each allowed to have only one item with SelectedItem = True.
My first thought was that I would probably just have to handle everything outside of the class, setting SelectedItem to False for every other item in a particular list when another item was selected. But that seems rather inelegant to me. So I've been trying to think of how this might be done within the class. For example: could I perhaps have a private string property called say "GroupName" - set in the New sub when adding a new instance of the class - and then use a private shared method to set every item's SelectedItem property to False, provided the item has the same GroupName as the newly selected item? I would have a go at doing this but I have no idea how to enumerate every instance of a class from within that class, or whether that's even possible. Is it? Or is there another (better) way to achieve my goal? Here is a cut-down version of what I've got so far:
Public Class ResourceItem
Public ID As Integer
Public Text As String[code]....
As can be seen: instead of instantiating a new ResourceItem and passing that as an argument to the manager's Add procedure, I'm simply passing the details of the new item and the procedure is creating the item from those. I don't know whether this is a good or bad idea - please advise - but I've done it because I couldn't figure out how to make the SelectedItem property only writeable by the manager, so I wanted to avoid having directly accessible objects that could have their SelectedItem property set to True without it deselecting all the other items in the same group. Of course that still leaves the possibility of setting a variable to one of the manager's list items and setting it from there, so I would still like to know how I could prevent that, if possible.
UPDATE: I didn't use the code above in the end, deciding instead to go with Cyborgx37's solution - which seems to work perfectly well for me despite the warnings about best practice. I also realised I would need to use the same class in another scenario where multiple items could be selected, so it was easy to add a Boolean property to the manager to enable that.
Public Class MyColorsClass 'Constructors Public Sub New() 'Empty Constructor
[code]....
However, if the empty constructor was called to instatiate this class then the colortype is not yet set. Therefore, if one accesses the 'IsColorCool' property it will always return 'False'. Now for the sake of this example, I must keep the empty constructor as part of the class.Now I could add some code in the 'IsPropertyCool' to check and see if a ColorType has been defined, and throw an exception if it has not been set, but I don't really want to do that.I also could always move the logic OUT of the property and into a method on the class called 'DefineIfColorIsCool' or something, and make the owness on the caller to make sure the method was called if they want to use the property 'IsColorCool'?
I have the following property in a property grid in VB.Net 2010.
<Description("Rapid Entry Post Car Wash Settings CarWashOptionPushButtons"), _ Category("Post Car Wash")> _ Public Property CarWashOptionPushButtons() As String
[code]....
I need to make this property a list box that gets the values from a database table and populates the list box with the values from the table. I have tried numerous things to no avail.
I've noticed there is no OnClientClick() property for the radiobuttonlist in the ASP.NET control set. Is this a purposeful omissiong on Microsoft's part? Anyway, I've tried to add OnClick to the radio button list like so:
For Each li As ListItem In rblSearch.Items li.Attributes.Add("OnClick", "javascript:alert('jon');") Next
But alas, it doesn't work. I've even checked the source in firebug, and there is no javascript shown in the radiobuttonlist. I'm using ASP.NET control adapters so don't know if that has anything to do with it. (I wish asp.net/javascript would just work out the box!!!)
Does anyone know of a control such as a Checked List Box where each item can have a value against it.For example you have a list of fruits and in the listbox it displays Apple, Orange & Banana but the values for those items are A, O & B.
I have a WinForms dialog box that contains 3 radio buttons. I am using ApplicationSettings to bind the Checked property of each of these RadioButton controls, but it doesn't do what I am expecting it to do. Now I have to click each radio button twice before it gets checked and the selected radio button is not being persisted.Is there a line of code I need to execute when the form is closed that saves the user settings?How do I eliminate the need for 2x clicking on the radio buttons?Is there a better way to persist this type of user setting? I do have a public property on the dialog box class that gets/sets an enum value based on which radio button is checked, but I didn't see an easy way of binding that property to a user setting. Should have specified that I'm using vb.net. I think that means My.Settings instead of Properties.Settings.
I have a form with about 48 checkboxes.I have a public sub that reads a webpage, parse the text of that site to get the values that correspond to these checkboxes.For example: one of the lines would be: "Exterior = 255", or "Street = 0".I do have check boxes that called "Exterior" and "Street". the question is how I can get my sub to address the appropriate control so I can set its "checked" property based on the text read.
How can I check the 'Checked' property of a dynamically-created checkbox during the Page_Load subroutine? Basically, I have a VB.NET page that creates some table rows dynamically, based on a number selected by the user. So, for example, if the user selects "3" from a dropdown list, the page posts back and creates three table rows. Each row contains a couple of textboxes, a dropdown list, and a checkbox (which are all .NET form controls rather than plain HTML controls, I should point out).Typically, the user would enter a few details into the form controls, and click the 'Submit' button, after which the page iterates through each row, and inserts the data into a SQL Server table.But if the user ticks the checkbox for that row, this signifies that the page is to ignore that row, and NOT insert that row of data into the database when the user clicks 'Submit'. This works well, but there is a problem. If the user clicks 'Submit' and some of the values entered into the form controls are invalid (so, for example, the user didn't enter their name) then the page won't submit the data, and instead, shows an error to the user informing them of the values they need to change. But if the user creates three rows, for example, but decides to "ignore" the third row (by ticking the checkbox) then when the page posts back, finds some invalid entries, and re-shows the form to the user to allow them to correct any errors, I'd rather the page didn't render the third row altogether. After all, they chose to create three rows originally, but then decided that they only needed two. So it makes sense that the third row is not recreated.
But what seemed to happen was that objCheckbox.Checked was always returning False, even when the checkbox was ticked. Once the page had loaded, the table rows had rendered again, and the tick was present in the checkbox, so it's not like the value was lost on postback. But at the point I check whether the checkbox is ticked, it always returns False, rendering a table row that the user doesn't need.Does anyone know how to get round this problem? I've read lots of articles about the .NET ViewState, and the page lifecycle, but I've yet to find a solution that works. I simply need to be able to check if a checkbox is ticked before re-creating some dynamic controls. [code] But then I basically found out that you can't override a protected member with a public one.
Is there a way to validate a groupbox with a couple radiobuttons in it to make sure that one of the radiobuttons is selected?
Heres why I need this. I need a user to be able to select their class rank out by way of radiobuttons in a groupbox. When they click submit, I need to validate that atleast one of the radiobuttons got selected and if not display a messagebox.
I got one reply early of:
If myGroupBox.Controls.OfType(Of RadioButton).Count(Function(rb) rb.Checked) = 0 Then 'There is no RadioButton checked in myGroupBox. End If
Is there any other ways other then that? Preferrably a more 'dumbed' down way? This is for just an entry level VB class, I would prefer not to use something of that nature if there is another way.
I want to use property bindings under application settings to store settings for my program. However I have run into a problem. For some reason the checked property is not binding to drop down menu item's checked state. The binding works for text boxes and other controls. I have tried to bind both using the checked property, and checked state property. Auto check on click for the menu items are set to true.
Anyone have any recommendations in getting the app-settings property binding to work without the need to manually set that info and manually run My.Settings.Save?
Public Class airplane Private var_num_seats As Integer Private var_num_engines As Integer
[code]....
Obviously, I don't wish that the class Glider has the method "start_engines" neither the property "num_engines". Otherwise, other child classes may have. How can I supress these property and method in child class, not just ignoring (if I can)?
I have procedure (Import) that calls a for a new instance of frmImportData. I also have a class name clsBatch that has a data table property called prpParametersTable.For some reason, I get an error (indicated below with ERROR>>>) when trying to assign prpParameterTable to cv_dtImport2. The error states "Object reference not set to an instance of an object.". Why does this error not happen when I assign dtBP to cv_dtImport1? Both cv_dtImport1 and cv_dtImport2 are equal to Nothing and in my Import procedure dtBP = prpParametersTable.
Public Sub Import(ByVal clsB As clsBatch) Try Me.cv_clsB = clsB
I have three class files, accounts.vb and transactions.vb in addition to my form.vb. I am unable to retrieve a member variable from on class from inside the other. When the combobox index changes, the program loads the correct account (checking or saving) from two different sequential files. I don't think I have the calcBalance procedure in the correct class file. And that is what I am having trouble with. Accessing it to display it. [Code]
This is a bit of a continuation from a previous post for which AtmaWeapon was very informative.
Problem: A parent class has a sub class with various properties. A property of the parent class is a List(of T) with T = the sub class The issue is how to store data in the sub class of the instantiated parent
Some example code (hopefully formatted correctly):
Code: '=========== Class Definitions ============= Public Class courseClass Public Class timeTableClass
I'm looking for a tutorial on how to Adding a list(of Class) or Collection as another Class's Property.What I am after is something like the Columns Collection for the DatagridView control.I would like to add Items in the graphics screen. Where the item list is displayed in the left panel and the selected Item properties are displayed in the right panel.
Is there a way for implementers of an interface where a ReadOnly property is defined to make it a complete Read/Write Property ?
Imagine I define an interface to provide a ReadOnly Property (i.e., just a getter for a given value) :
Interface SomeInterface 'the interface only say that implementers must provide a value for reading ReadOnly Property PublicProperty As String End Interface
This means implementers must commit to providing a value. But I would like a given implementer to also allow setting that value. In my head, this would mean providing the Property's setter as part of the implementation, doing something like this :
Public Property PublicProperty As String Implements SomeInterface.PublicProperty Get Return _myProperty
I searched on the forum / Internet for the solution how a PropetryInfo object (of a Public property) can reveal if it has a Private Protected Setter ... it was all in vain .... all help I found was about how to "Set" value of a public property having a Private Setter.I would like to know if I have a PropertyInfo object of a public property, how would I know if its Setter is Non Public?
I tried, in a exception handling block, where I did a GetValue of the PropertyInfo object and then called SetValue by setting the same value back... but to my surprise it worked well and didn error out.
I'm having a few problems converting some code into VB.NET from C#. Most of the translating is done, but I am getting errors when I try to run my code, and I can't figure out what is causing them. Here is the Sub I translated.
Public Sub CreateWidget() Dim blue As LCDColor blue.Red = 0 blue.Green = 0
[code]....
The error I receive on this line ("vision.Widgets.CreateWidget(wg1)") reads "In order to evaluate an indexed property, the property must be qualified and the arguments must be explicitly supplied by the user."
start with I was given a program by a friend that was created in Excel 2003 with the help of Visual Basic Editor. He said he used Visual Basic 2003, which he is not 100% sure about. Anyways he used CurLine in the program and when I try to open it in Excel 2007 and then open the Visual Basic Editor and run the program I get the following error:Run-time error '-2147418113 (8000ffff)':Could not get the CurLine property. Unexpected call to method or property access.
I have a listbox binded to a list of objects. For each list item I wanted to have a rectangle whose fill color is determined by a few properties of the binded object. So I did the following:
Made sure INotifyPropertyChanged was implemented on my object.Created a class to expose the properties I am interested in as attached properties.Binded the properties of the object to the attached properties of the rectangle Created a style that uses triggers to set the rectangle fill based on attached properties.
This works, but only the first time the property of the object changes. After that, the attached properties do not seem to be receiving notification when the data object's property changes. I have double checked and my data object is raising the INotifyPropertyChanged event.
I have a weird question and I honestly hope you understand what is happening here: I design my form (using VB.NET) and put on it a few textboxes, comboboxes and a listview. After the design, I want to adjust the TabIndexes for each control on the form. On the right-hand side of the interface is the property box.
I then select the 'TabIndex' property item and enter a number key (for instance 0) for that selected item. I then select the next textbox control and enter the next number (for instance 1) WITHOUT re-selecting the 'TabIndex' property item. As soon as I select the combobox or listview control, the currently selected property item jumps to 'Items' or 'Collections' and does NOT remain on the 'TabIndex' property item. Why is this happening? Everything worked fine and all of a sudden this starts happening. Should I reset the editor settings or how can I resolve this matter?