|
Now take the RandomSubItems and put it in a new Module or Class (outside of the Form's Class) and try it...the listview will not update via the UI...
|
|
|
|
|
OK. It works fine...
Form1 code:
Private Delegate Sub AddItemToListViewDelegate(ByVal item As String)
Private Delegate Sub ChangeSubItemDelegate(ByVal index As Integer, ByVal item As String)
Private t1 As Thread
Private t2 As Thread
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Module1.myForm = Me
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListView1.Items.Clear()
t1 = New Thread(New ThreadStart(AddressOf AddItems))
t1.Start()
Thread.Sleep(100)
t2 = New Thread(New ThreadStart(AddressOf Module1.RandomSubItems))
t2.Start()
End Sub
Private Sub AddItemToListView(ByVal item As String)
If ListView1.InvokeRequired Then
Dim d As New AddItemToListViewDelegate(AddressOf AddItemToListView)
Invoke(d, New String() {item})
Else
Dim newItem As New ListViewItem(item)
newItem.SubItems.Add("---")
ListView1.Items.Add(newItem)
Application.DoEvents()
End If
End Sub
Public Sub ChangeSubItem(ByVal index As Integer, ByVal item As String)
Try
If ListView1.InvokeRequired Then
Dim d As New ChangeSubItemDelegate(AddressOf ChangeSubItem)
Invoke(d, New Object() {index, item})
Else
If ListView1.Items.Count > index Then
ListView1.Items(index).SubItems(1).Text = item
Application.DoEvents()
End If
End If
Catch
End Try
End Sub
Public Sub AddItems()
Dim x As Long
While x < MAXITEMS
Try
AddItemToListView(String.Format("Item #{0}", x))
x = x + 1
Catch ex As ThreadAbortException
Exit While
End Try
End While
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If t1 Is Nothing Then
Exit Sub
End If
t1.Abort()
t1.Join()
t2.Abort()
t2.Join()
End Sub
Module1 code:
Imports System.Threading
Module Module1
Public myForm As Form1
Public Const MAXITEMS As Long = 20
Public Sub RandomSubItems()
Dim RNG As New Random
Dim x As Long
While True
Try
myForm.ChangeSubItem(RNG.Next(0, MAXITEMS), RNG.Next(0, 1000).ToString())
Catch ex As ThreadAbortException
Exit While
End Try
Thread.Sleep(1)
End While
End Sub
End Module
I never use Modules, ... ever. They're an outdated concept that's around just to be backwards-compatible with VB6 code.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks Dave for all your help...I was simply trying to duplicate my issue in a easy manor...The problem was, in the module or Class (what I really use) I reference the form itself and not the public variable you used in the module:
Public myForm As Form1
Change
myForm.ChangeSubItem(RNG.Next(0, MAXITEMS), RNG.Next(0, 1000).ToString())
To
Form1.ChangeSubItem(RNG.Next(0, MAXITEMS), RNG.Next(0, 1000).ToString())
and you see the issue...changing back to what you had corrects it...Thanks again...
Can you tell why it was needed, just curious?
|
|
|
|
|
Because in that Module, or any other class, Form1 doesn't exist. This is not like VB6 where the forms existed in every context. The is REAL Object Oriented Programming and you have to follow the rules this time.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Ok...how come you can call Form1 directly, cheating the threading model? Just trying to get the full understanding...
|
|
|
|
|
I don't call Form1 directly anywhere. What are you talking about?? A little snippet would help...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
If you pass a ListViewItem to the module, and reference the form and listview object (to update it), you can update the the ListViewItem..I guess I have answered my own question because it does the same as the myForm object, just using a different object (lower level)...
|
|
|
|
|
That works too. But the code for updating the UI should remain on the form responsible for that UI.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hello everyone,
A quick question. Is there a way to make a grid on a regular form or a MDI form. I want to create a GUI that has a grid on it to help the user with object placement while the application is running.
Thank you,
Quecumber256
|
|
|
|
|
I want to catch the printer jobs , information like , printer name , pages printed , system name and save them in to a access table , How can i do that , can u help me out
Fahad Ahsan
|
|
|
|
|
|
|
Good Afternoon:
I'm trying to develop a data entry system. There could be upto 6 different
tables to enter data into. My current design has one table and it's corresponding fields dropped onto a form. My question is this:
How do I make this generic? I want the user to pick a product which will
load data onto the form (i.e form1) for processing. When completed, if they want to enter data for another product (from another table), they pick the product and the form loads (to form1 from above). How do I handle the
CustomDataSet, TableAdapter, BindingSource and BindingNavigator?
Any help greatly appreciated.
Mike
|
|
|
|
|
Hi, I'm new guy to Vb.net. I have one issue with Crystal Report. Currently I have made some changes in the crystal report (which uses xml generated dataset as connection). But whatever the changes I made in the report is not refecting during runtime. Can anyone help me in this?
The way I did changes in the crystal report (as follows).
1. I have included new element (which is an new column from the table) in the xml schema in the project
2. generated it as dataset and Save that
3. I have included the field from the Dataset into report.
4. Save the report and entire project.
5. Build project.
When i click the particular button trigger event it loads the correct report without my changes. Please help to figure out this issue (which is very important for client's business concern)
Also, during build process i'm getting error "import on word microsoft.interop.word" COM object is not found". Does is related to this...?
Please help where i'm making mistake.
Jagan S.
s.jagans@gmail.com
|
|
|
|
|
Hi
I have one issue with Crystal Report in VB.net. Currently I have made some changes in the crystal report (which existing one and uses xml generated dataset as connection [ado.net xsd]). I need to include a new column in the report, I made that changes in the report is not reflected during report load. Can anyone help me in this?
The way I did changes in the crystal report (as follows).
1. I have included new element (which is an new column from the table) in the xml schema in the project
2. generated it as dataset table and Save that
3. I have included the field from the Dataset into report.
4. Save the report and entire project.
5. Build project.
When i click the particular button trigger event it loads the reports, but new column which i have included was not displayed (stilling loading the old report) and my changes are not available. Please help to figure out this issue (which is very important for client's business concern)
Also, during build process i'm getting error "import on word microsoft.interop.word" COM object is not found". Does is related to this...?
Please help where i'm making mistake.
any got the idea about to the above said problem..I'm badly looking for some input.
Jagan S.
s.jagans@gmail.com
|
|
|
|
|
Hi everyone,
I have a listview that display data from my SQL query. Now, I'm trying to modify some data on the listview by showing the selected data into a new form.
After I save the modified data, how can I show the updated data on the listview without having to re-run the same query, cause if I re-run the query it will take some time to get the updated data?
Is there any way to do this?
Thank you very much.
|
|
|
|
|
I failed to create lan chat in vb.net plz help me
Harshad
|
|
|
|
|
look up this
http://www.a1vbcode.com/app-3263.asp
_____________________
Proud to be Albanian
_____________________
|
|
|
|
|
Hello all,
Need YOUR help. I want to show MSchart in Web Application. Is it possible?? I have added it using Add Remove window and even it can be seen on the Web page.
But the problem is ahead. I can't program it. I can't see its events on the code page & even can't program it in any other events. cant we use this control in Web page. If we can, then please tell me how.
Waiting for your reply,
|
|
|
|
|
I recommend that you do not use the MSChart ActiveX control. It is not well documented and example code is hard to find.
Instead, use a .NET charting control. I highly recommend ZedGraphs[^]. It has far more capabilities, looks much nicer, comes with plenty of code examples, and it's free.
|
|
|
|
|
i have created 1 application in winforms
in that
i have 1 text box i typed some text in that and click on save button and i close that application
now wht i wanna is when i will open that application again that same value of text box should be their in textbox but i dont want to store that in any database or not also in some text file it should get save in some where in application settings
plz help me gays
Harshad
|
|
|
|
|
I am not gay (I am a guy dough) but I will anwser your question anyways...
You will need a file of some sort soo if you can't write any files then your only option is the windwos registry.
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
Probably what you want is something like self modifying code, but I doubt you can do that in VB or .NET.
I am not gay too.
|
|
|
|
|
In my website, I have a index.htm frameset which contains five frame of ASP,
It creates one session for one connection before,
After I add some ASP.NET page to this site,
It becomes one session per each frame!
Except redefine the website, any method to fix it?
|
|
|
|
|
I've got a string of figures that i'm reading,some has got decimal places and some not. After reading them and converting them to Integers or Long the figures without decimal places suddenly got decimal places. How can i get rid of them?
Dim Capt_Empl As Long
Dim Act_Capt_Empl As Long
IRON_Capt_Empl = Clng(Mid(strInp, 43, 11))
IRON_Act_Capt_Empl = Clng(Mid(strInp, 55, 11))
|
|
|
|