|
Hello
This is one exercise in OOP lesson ,but still I am bit confuse how to get rid of small widgets, and what I want to do is when form loads it displays small widgets(<= 20) in one listbox and and rest in second listox, any help, In Public Function GetRidOfTheSmallWidgets I have put loop but it's only displays 0,1,2 so how can i add small widgets in one listbox and big ones in second listbox
Imports System.Collections.Generic
Imports System.Text
Imports System.Collections
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim colBoxesOfWidgets As New ArrayList()
colBoxesOfWidgets.Add(New BoxOfWidgets("Cardboard"))
DirectCast(colBoxesOfWidgets(0), BoxOfWidgets).colWidgets.Add(New Widget("The Blue Widget", 12))
DirectCast(colBoxesOfWidgets(0), BoxOfWidgets).colWidgets.Add(New Widget("The Red Widget", 15))
DirectCast(colBoxesOfWidgets(0), BoxOfWidgets).colWidgets.Add(New Widget("The Silver Widget", 6))
DirectCast(colBoxesOfWidgets(0), BoxOfWidgets).colWidgets.Add(New Widget("The Green Widget", 52))
colBoxesOfWidgets.Add(New BoxOfWidgets("Metal"))
DirectCast(colBoxesOfWidgets(1), BoxOfWidgets).colWidgets.Add(New Widget("The Gold Widget", 9))
DirectCast(colBoxesOfWidgets(1), BoxOfWidgets).colWidgets.Add(New Widget("The Orange Widget", 115))
DirectCast(colBoxesOfWidgets(1), BoxOfWidgets).colWidgets.Add(New Widget("The Pink Widget", 1))
colBoxesOfWidgets.Add(New BoxOfWidgets("Metel"))
DirectCast(colBoxesOfWidgets(2), BoxOfWidgets).colWidgets.Add(New Widget("The Grey Widget", 12))
DirectCast(colBoxesOfWidgets(2), BoxOfWidgets).colWidgets.Add(New Widget("The Black Widget", 15))
DirectCast(colBoxesOfWidgets(2), BoxOfWidgets).colWidgets.Add(New Widget("The White Widget", 19))
DirectCast(colBoxesOfWidgets(2), BoxOfWidgets).colWidgets.Add(New Widget("The Brown Widget", 60))
DirectCast(colBoxesOfWidgets(2), BoxOfWidgets).colWidgets.Add(New Widget("The Peach Widget", 16))
Call GetRidOfTheSmallWidgets(colBoxesOfWidgets)
End Sub
Public Function GetRidOfTheSmallWidgets(ByVal colBoxesOfWidgets As ArrayList) As ArrayList
For I As Integer = 0 To colBoxesOfWidgets.Count - 1
lstWidgets.Items.Add(I).ToString()
Next
Return (colBoxesOfWidgets)
End Function
End Class
Class BoxOfWidgets
Public boxType As String
Public colWidgets As ArrayList
Public Sub New(ByVal newBoxType As String)
boxType = newBoxType
colWidgets = New ArrayList()
End Sub
End Class
Class Widget
Public name As String
Public length As Single
Public Sub New(ByVal newName As String, ByVal newLength As Single)
Me.name = newName
Me.length = newLength
End Sub
End Class
|
|
|
|
|
You are dealing with an ArrayList that contains BoxOfWidgets instances. The ArrayList is populated with only 3 BoxOfWidgets instances: Cardboard, Metal and Metel. Each BoxOfWidgets instance has it's own internal ArrayList named colWidgets . Perhaps your intention is to iterate over the internal collections of each BoxOfWidgets :
For I As Integer = 0 To colBoxesOfWidgets.Count - 1
For J As Integer = 0 To DirectCast(colBoxesOfWidgets[I], BoxOfWidgets).colWidgets.Count - 1
lastWidgets.Items.Add(J).ToString()
Next
Next
Last, I'd also recommend using the Generic List rather than an ArrayList as it will perform better.
Keep It Simple Stupid! (KISS)
|
|
|
|
|
hello sir
Yes it works but it only displays o,1,2,3 numbers in listbox not name or length of widgets
waiting for your kind rep.
|
|
|
|
|
The reason you only see numbers in the ListBox is because the following loop is adding the integer I to the list box on each pass:
For I As Integer = 0 To colBoxesOfWidgets.Count - 1
lstWidgets.Items.Add(I).ToString()
Next
So, you probably want something like this:
For I As Integer = 0 To colBoxesOfWidgets.Count - 1
lstWidgets.Items.Add((DirectCast(colBoxesOfWidgets(I), BoxOfWidgets).boxType)
Next
Keep It Simple Stupid! (KISS)
|
|
|
|
|
Hello sir
thanks for your rep.
yes it works but still i am not getting all the lists for widgets like it shows box of widgets but it's not showing what's in there in each box so I have tried this and it shows how many widgets are there in each box but not name of that widgets i am getting there but still need to do some thing little to get there
so this is what i have done
For J As Integer = 0 To colBoxesOfWidgets.Count - 1
ListBox1.Items.Add(DirectCast(colBoxesOfWidgets(J), _
BoxOfWidgets).colWidgets.Add(J))
Next
so i think i need to get class widget to get name and length for each widgets but i am lost
waiting for your kind rep.
have a nice day
|
|
|
|
|
I have a multithreaded application, and want to access a ListBox from multiple threads. However, if i add an item to the ListBox from a thread different from the one it was created in, the changes are only shown, once i trigger a refresh from the creation thread. Is there any way around that ?
|
|
|
|
|
|
Thanks, i also found help here[^].
|
|
|
|
|
Nice to see that you got it working
|
|
|
|
|
You have to use BeginInvoke method of the control while modifying the controls' property from a different thread other than which the control was created on.
refer the link
http://msdn.microsoft.com/en-us/library/a06c0dc2.aspx
hope it solves ur problem
|
|
|
|
|
I'm trying to write a Custom Panel that draws contained controls with mixed art stuffs (rectangles, circles, triangles). I've done it very well, the problem comes when I implement double buffering. Here's my code
class BgPanel : System.Windows.Forms.Panel
{
//....
private Image buffer;
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(buffer, 0, i);
}
private void RenderToBuffer()
{
Graphics g = Graphics.FromImage(buffer);
foreach(Control c in Controls){
DrawArts(g); // draw some colored shapes
//********************
How do I draw each control into buffer?
//********************
DrawArts(g);
}
}
//....
}
My problem is that I don't know how to draw each control inside the panel into buffer image. Could anyone please help me with this?
I'm working on .NET CF 3.0, by the way.
Thanks,
iSoft of Technomation
modified on Sunday, December 7, 2008 6:13 PM
|
|
|
|
|
|
I work for a police department and we just got new equipment in our cars. We are still running xp and have new keyboard (staco m901). On the keyboard it has an emergency button that is supposed to be programmable to do whatever we need it to in an emergency. From what I have read you have to do that through a macro. That's all I really know about it. There was no manual with it and the company won't reply to e-mails. What I'm wanting to do is make it so when you push the emergency button it black out the screen. I don't really care how it blacks out the screen whether it is diabling a driver or popping up a window I just need it to black out. Then when they are ready I need to be able to push a button (doesn't matter which one) to get the screen to reappear. I have never used a macro in windows (if that is what I'm needing to use) and can't really find any help on how to do it.
Thanks for any help,
Alex Wiltz
Communication Specialist
Kansas State University Police Department
|
|
|
|
|
"Macros" are a concept in software, not a keyboard. All the keyboard does is send a small code that says which key was pressed. It's up to your software to know what to do with that keypress, if anything.
So, if the software you're running (I'm assuming here!) on Windows XP exposes some kind of macro functionality, what you do depends on the environment exposed by that software to the macro code.
Now, if the software doesn't expose anything, then you'll have to write your own application that starts a global keyboard hook, looks for that one key, and either creates a window that covers the entire screen, or locks the Windows XP workstation. In the case of covering the screen with a blank window, you'll also have to have the hook code listen for another keypress and destroy that window when needed.
|
|
|
|
|
why this code threw exception?
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=c:\Degree.mdb")
Dim cmd As New OleDbCommand("select * from Student", con)
con.Open()
Dim sdr As OleDbDataReader = cmd.ExecuteReader()
Do While (sdr.Read = True)
Me.DataGridView1.Rows(0).Cells(0).Value = sdr(0)
Loop
sdr.Close()
con.Close()
con = Nothing
End Sub
the exception details
System.ArgumentOutOfRangeException was unhandled
Message="Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"
ParamName="index"
Source="mscorlib"
|
|
|
|
|
Without more information it's hard to tell, but I suspect that the table Student has records containing more than one value - ie StudentID, StudentLastName, StudentFirstName, etc. You are trying to shove all values of a record into a single cell of the DataGridView. Also, since you are using a loop to step through all the values in the DataReader, I assume you expect more than one student to be returned. Why, then, are you not providing an index to step through the rows and cells of the DataGridView? Instead, you are repeatedly assigning each record to the same row and cell.
"A Journey of a Thousand Rest Stops Begins with a Single Movement"
|
|
|
|
|
You execute the reader and then you set a value into the datagrid. In what point the datagrid will have rows or cells?
The 'correct' way to do this is that you fill the datagrid using databinding, otherwise you have to create the columns and the rows to the datagrid manually. You can't just assign a value to a datagrid cell and expect that the framework creates a cell if it's not present.
|
|
|
|
|
I need to fill Autocomplete textBox dynamically. any one have idea for that?
|
|
|
|
|
Do use the search textbox at the top of this forum (I did a search on autocomplete textbox and found about 33 potential candidate articles). If I recall, there are a few articles floating around here on the subject. Good luck
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
|
Jeez, gave him a good answer, no thanks and reposts. Some people, I swear
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
Paul Conrad wrote: gave him a good answer
Agree (and 5'd)
Paul Conrad wrote: no thanks and reposts
Yeah, I know what you mean.
Gladly many people understand that the conversation goes both ways and this site is not somekind of paid support (it isn't... is it? Did my post office misplace the paycheck... Again ).
|
|
|
|
|
Mika Wendelius wrote: this site is not somekind of paid support
Yep.
Mika Wendelius wrote: Did my post office misplace the paycheck...
Go give your local postmaster hell, then
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
yeah.. searched ...but no clues around Dynamic filling..
modified on Tuesday, December 9, 2008 11:46 PM
|
|
|
|
|
SelvaSR wrote: but nothing is thr for multicolumn autocomplete textbox
possibly not, but then your original post never mentioned multicolumn did it, so why expect anyone to know that was what you wanted? However, a search on google for multicolumn autocomplete only returned around 29,000 results, the first 2 of which are articles here on CP, so I guess it would be difficult for you to find some ready written code, which I suspect you are really after.
Bob
Ashfield Consultants Ltd
|
|
|
|