|
Let's see your code, I think you are allowed to have tens of thousands of items in a listbox item collection, may be wrong but let's have a peek just to see.. I just ran a test
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4000; i++)
this.listBox1.Items.Add(i.ToString());
}
Added all items fine...
|
|
|
|
|
Hi,
If there is a limit it is much higher than 3702. What effect are you seeing when you try to add your items. Is there an exception?
Alan.
|
|
|
|
|
I didnt add them dynamically.. was adding them at design time.. i added abt 2228 states
then i cudn copy any more items in to the items property..
|
|
|
|
|
|
so maybe the property editor is what is the limiting factor.
anyway, I would never enter such an amount of data through a poor editor.
Why not:
1. enter it all in a file, then at run-time read that file (will be easier and faster); if need be, you can add the file as an internal resource
2. come up with a better user interface, people don't like scrolling thousands of items to find the right one.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Well.. it worked wen i populated it at run time..Thanks a lot
And about a different interface.. can u suggest any .. I am new to vb and dont know much abt the controls avaliable...
|
|
|
|
|
You're welcome.
suvigna wrote: an u suggest any
depends on circumstances, you should tell more about the application, what is in the list, how often one needs to select an item, how relevant adjacent items are, etc. And/or show say ten consecutive items.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Its for me to formulate a query.. Its a spatial query.
For example .. name all the hospitals in this city .. So when the user selects a city.. i.e., the city name.. i send it to the dbms to find all the hospitals in it.. and there is other processing done later
|
|
|
|
|
OK, then I would change it to a two-stage selection:
- first show all possible values for a category (e.g. by state/province, by first letter of name, by first two digits of zip code, whatever seems appropriate)
- then display the - much shorter - list of cities that belong to the chosen category
So if you come up with say 20 categories, the user would chose one, then select from an average of some 200 cities; much easier than scrolling through thousands of them.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
ok.. ya thanks.. will do that .. thanks alot
|
|
|
|
|
Yea, scrolling through thousands of items is insane..
Motivation is the key to software development.
|
|
|
|
|
So, you're populating all 3000+ cities in a single list?? How about adding another list that lets the user select a state, then you populate the city list with only the cities in the selected state?
|
|
|
|
|
Use multiple listboxes and sort alphabetically, listbox 1 would have all hospitals that begin with A-C, or you can subdivide based on region of a city, type of hospital. There are always different ways to categorize instead of dumping that much information.
|
|
|
|
|
I was attempting to build an analog clock for my computer. I've got the program just about finished, but I'm having a problem with the form's Invalidate() Function. When I run the program everything works fine for 5-6 seconds, but after that the form won't paint itself anymore. I've checked in debug mode and the loop is still running but the form doesn't paint. So I went a step further and forced the paint event under the mouse_doubleclick(). It is keeping time and the loop is running, but the form won't paint by itself.
I have a feeling that the problem is with something that XP is doing behind the scenes. Does anyone know how to solve this problem?
|
|
|
|
|
Adam Loudermilk wrote: Does anyone know how to solve this problem?
Looks like an hardware problem; in the device between the chair and the keyboard.
BTW what part of :
Please DO NOT POST PROGRAMMING QUESTIONS HERE. If you have a programming question please post it in the programming forums at forums.
you don't get?
Of all forms of sexual aberration, the most unnatural is abstinence.
|
|
|
|
|
Thank you for straightening that out for me. I'm new to programming and the CodeProject. It's always nice to have a friendly person show you the way.
Thanks for your help Diego Moita,
Adam
|
|
|
|
|
Oops and you thought you were in the Lounge
Unless of course the original post was in the Lounge and it was moved!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi, you'd better show some code, regarding the timer (initialization and tick handler) and possibly the paint handler (the essence of it, not all the graphic details).
|
|
|
|
|
I don't know how much you need (honestly I didn't think that any would be required to understand the problem). I've copied the timer tick() routine.
Private Sub ClockTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ClockTimer.Tick
Me.Invalidate()
HourHand.Position = System.DateTime.Now.Hour
MinuteHand.Position = System.DateTime.Now.Minute
SecondHand.Position = System.DateTime.Now.Second
Application.DoEvents()
End Sub
When the program first starts to run the clock will tick about five times. Then it will pause for about 3 seconds, tick one more time and then it stops. I know that it is something that XP is doing, but I'm unsure of how to force it. I've also changed the styles of the form:
Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.FixedHeight Or ControlStyles.FixedWidth Or _
ControlStyles.SupportsTransparentBackColor, True)
If someone has any idea what this might be I would appreciate you letting me know.
Thanks
|
|
|
|
|
Hi,
the DoEvents() does not belong there, just remove it.
and the Me.Invalidate() needs to come after you changed the parameters: first adjust the positions, then tell the Form it needs to be redrawn! I am assuming your Form itself is showing the hands.
If that does not solve it, something else is wrong too. One possibility is your system is overloaded and your app does not get a chance to process its message queue. Is Task Manager indicating a high CPU load?
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Thanks for responding so quick Luc. I would like to get this thing finished. I've been working on it entirely too long.
So, I took the DoEvents() out and switched the order of operations like you had said. Still no luck. Then I tried a couple of other things:
1. tried publishing the program to see if it would still act the same as a stand alone app. It compiled but when I try to install it an error comes up and won't install completely.
2. (very strange I know) If you press f5 and minimize the VB window really fast, then go over and double click on the system clock in the system tray the program will run perfectly until you close the "Date and Time Properties" window. After you close the D and T window the program will freeze again in about 4 seconds.
I know that the computer is not too busy because I can move the form around the desktop just fine. It doesn't hang up at all.
I'm really stumped! Not very sure what to do from here. If anyone has an idea please let me know.
There is probably too much code to insert it all in one of these replies. Is there anyway to attach the project folder somehow?
Thanks again for your help
|
|
|
|
|
OK,
tell us a lot more about your app.
what is its main goal? what special things does it include?
third-party stuff? P/Invoke? COM objects?
are you painting everything in the Paint handler?
are you using CreateGraphics?
do you call Dispose() on everything that you created and don't need any longer.
open up Task Manager, and watch your app's memory consumption; is it increasing all the time?
and what did you mean by "the loop is still running" in your original post?
BTW: you can run an app without creating an installer and everything; just open up the project's folder, dive into bin/debug/ (or bin/release) and double-click the exe file (the one without vshost in the name).
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
No to everything except; Yes, I'm painting everything in the paint handler, and the program's memory is steady around 41,000K.
The application is just eye candy. It doesn't do anything special except look and act like an analog clock that sits on the desktop.
When I said "the loop is still running" I was referring to the timer. The timer was still ticking and the Me.Invalidate() function was still being called, but nothing was happening.
I've actually come up with a solution that seems to be working. Originally I was painting everything to the form. I inserted a picture box and am painting on that now. So now the paint handler has PicBox.Invalidate() instead of Me.Invalidate(). It's been running for about ten minutes without freezing up.
Adding the picture box seems to be the answer to the problem, but I'm still curious why it was not working before. Is there something that Microsoft built into the operating system that keeps the form from painting itself too many times?
Thanks for all your help Luc,
Adam
|
|
|
|
|
Hi Adam,
You're welcome.
I don't know about anything special when painting to a Form, but then I tend to always paint to a Panel, I don't want to a Form most of the time, since the drawing to me is an object that I want to be able to move, resize, whatever, independent of the Form. Of course there could be reasons to do it differently.
I don't like PictureBoxes that much, they don't do much, and often work against you, when things become somewhat involved.
FWIW: you could anchor the Panel or PictureBox, or set its Dock to Fill, so it grows/shrinks with the Form (but yours was fixed, wasn't it?).
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Doesn't Me.Refresh() work?
Motivation is the key to software development.
|
|
|
|