|
I suggest doing your own homework.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Hi,
I have a public sub in a module that inserts text into a textBox on another class(form). This sub is called when the data from a RS-232 (serial port) comes.Because the serial port is opened on another thread, a cross-thread InvalidOperationException is raised when I try to insert text into a text box.
In a class I would do this:
Private Delegate Sub procStatusDelegate(ByVal msg As String, ByVal clear As Boolean, ByVal noviRed As Boolean)
Public Sub procStatus(ByVal msg As String, ByVal clear As Boolean, ByVal noviRed As Boolean)
if me.invokeRequired then
Dim procStatusDele As New procStatusDelegate(AddressOf procStatus)
Dim params(2) As Object
params(0) = msg
params(1) = clear
params(2) = noviRed
me.invoke(procStatusDele,params)
else
' do normal stuff
end sub
But because module doesn't have Me. namespace, Me.invoke isn't available so the question is what is the alternative?
Thank You!
|
|
|
|
|
I might be way off course here but this is what I'm thinking...
Regardless if you used a module or a class with a shared routine, you would need to pass a delegate into either from the form so that you can populate the textbox. So if you did this, upon creating the instance of the form, then the module wouldn't need the ability to do the "invoking" because it could just call the delegate that it was holding on to. The above routine is correct if that is the routine inside the form that the module would call. The 'do normal stuff' would be where textbox.text = ?? would occur...
Just a thought....
You could remove all of this
Dim procStatusDele As New procStatusDelegate(AddressOf procStatus)
Dim params(2) As Object
params(0) = msg
params(1) = clear
params(2) = noviRed
me.invoke(procStatusDele,params)
and do this
me.invoke(New procStatusDelegate(AddressOf procStatus),new object() {msg,clear,noviRed})
less operations the better
nathan
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous
modified on Tuesday, February 05, 2008 10:00:25 AM
|
|
|
|
|
unix_master01 wrote: But because module doesn't have Me. namespace, Me.invoke isn't available
Me isn't a namespace, it's a keyword. (Most other languages uses the this keyword instead.) Me is most definitely available, as the method is not static (Shared in VB).
It's the Invoke method that isn't available, because the class (module) doesn't inherit from the Control class.
Put a method in the form where you want to update the textbox. As the form inherits from the Control class, the Invoke method is available. Now just call the method from your thread.
Experience is the sum of all the mistakes you have done.
|
|
|
|
|
Hi all,
How can I check a given date is falling between a given startDate and EndDate.How can I check this in VB.Net
Thanks
Dana
|
|
|
|
|
Something like:
If myDate >= startDate AndAlso myDate <= EndDate Then
' Do something
End If
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
Thank you. That has done the trick
Dana
|
|
|
|
|
Hello
I have the following code to display my time difference on a label and it works fine until my endtime is less ie. "01:00:00" and now() is more ie. "13:00:00"
What can I do to fix this?
<br />
Dim EndTime As New DateTime(Now.Year, Now.Month, Now.Day, My.Settings.EndHour, _<br />
My.Settings.EndMinute, 0)<br />
Dim currentTime As Date = DateTime.Now().ToString("HH:mm:ss")<br />
Dim Timeremain As Date = (EndTime - Now).ToString<br />
<br />
Label8.Text = currentTime<br />
Label14.Text = Timeremain.ToString("HH:mm:ss")<br />
thanks Chris
|
|
|
|
|
You should really use Option Strict, so that you don't do so many unintentional conversions.
You are converting a DateTime into a String and back into a DateTime again (with a different date) and then back into a String again, and you are converting a TimeSpan into a String and then into a DateTime and then back into a String again.
What would you like to do if the remaining time is negative?
Experience is the sum of all the mistakes you have done.
|
|
|
|
|
Hi,
I would like for my remaining time label to display the correct time remaining.
for example if currenttime is "20:00:00" and endtime is "05:00:00" to display remain time as "09:00:00"..and so forth
thanks Chris
|
|
|
|
|
Then you have two alternatives:
1. Check where the end time really is, instead of just assuming that it's today regardless if it's passed or not.
2. Check the result (the TimeSpan value) and add 24 hours if it's negative.
Experience is the sum of all the mistakes you have done.
|
|
|
|
|
You should have a look at the timespan class here.
|
|
|
|
|
Thankyou I'll be looking at using timespan then.
Chris
|
|
|
|
|
Hi,
Is there a way to make a Text box(multiline) auto scroll as it fills with data?
Thanks!
|
|
|
|
|
I'm not quiet sure, but probably something like this:
<br />
TextBox1.SelectionStart = TextBox1.Text.Length<br />
TextBox1.SelectionLength = 0<br />
TextBox1.ScrollToCaret()<br />
Good Luck!
|
|
|
|
|
If you're using .NET 2.0 or above, you can use the AppendText method of the TextBox to have it scroll to the bottom of the text. I can't remember if .NET 1.1 and below will scroll the text to the bottom for you.
|
|
|
|
|
Hi,
I have a module and a public class.
The class is called publicPropertyShare. You can realize the function of the class by its name. In this class I put public property, public variable, anything that needs to be public for the entire project but need o be in a class.
Now I have a event declared in this class: public event indicator(byval msg as string)
Now I also have a public module in which I do basically the same thing as with the class but only put public functions,subs, and variables.
As the application starts I want to initialize all variables in the public module, including the publicPropertyShare class. I want it to instantiate the class at the very beginning so I do that. public class1 as new publicPropertyShare
I didn't have any problems until I needed this event, so I added public withEvents class1 as new publicPropertyshare.
So I could Raise and handle this event on the whole project without any other declaration or instantantation.
But when I want to handle the event in one of my classes it says error...
private sub handle(byval msg as string) handles publicPropertyShare.indicator
end sub
the error is : "Handles clause requires a WithEvents variable defined in the containing type or one of its base types"
But the variable is declared WithEvents in the public module!
Any help appreciated.
Thanks!
|
|
|
|
|
wouldn't it be?
private sub handle(byval msg as string) handles class1.indicator
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous
|
|
|
|
|
If I understand your problem correctly, you'll have to wire up the event yourself. You won't be able to use the Handles clause. Check out the "AddHandler" and "RemoveHandler" statements for wiring up event handlers.
|
|
|
|
|
unix_master01 wrote: But when I want to handle the event in one of my classes it says error...
unix_master01 wrote: But when I want to handle the event in one of my classes it says error...
The following declaration, "Public WithEvents class1 As New publicPropetyshare " needs to be in the "same" class that your are trying to trap the event. From your explanation it seems that you have these two items in separate classes.
Also, when you are in Visual Studio and you have declared the object WithEvents you can use the object dropdown above the code editor, select the object, in this case, class1 , and then select the event you want to handle in the event dropdown. This will paste the event stub in your code for you.
Suggestion: Have a look at all .NET event signatures. It is a good practice to follow the pattern that is layed out. (sender As Object, e as EventArgs) In your case, you would derive a class from EventArgs and add your Message As String as a property to the new EventArgs class.
modified 27-Feb-21 21:01pm.
|
|
|
|
|
hi there VB pros. I would like to know how to create a simple encryption algo to encrypt and decrypt files.
|
|
|
|
|
Why not use real encryption? Take a look at the System.Security.Cryptography namespace.
Experience is the sum of all the mistakes you have done.
|
|
|
|
|
Firstly, nobody is going to write your code for you.
Secondly, I gave you a suggestion last time you posted this question.
Thirdly, try a Google search[^] before asking your question. You may find what you are looking for.
Steve Jowett
-------------------------
It is offen dangerous to try and see someone else's point of view, without proper training. Douglas Adams (Mostly Harmless)
|
|
|
|
|
pls, help me!!!
While Upgrade VB6 project to VB.Net. i have got the following error
"Upgrade failed: Exception occurred: Can't use character device names in file names"
i need your help!!!
|
|
|
|
|
hi
The problem is occuring becuase one file in your project (Form1) does not have an extinsion. To work around the problem simply rename the file Form1 to Form1.frm from within VB6.
Or
Look for a file in your VB6 project that has a name like the old DOS device names (CON, COMx, LPTx, KBD, NUL, AUX, PRN). Rename the file.
or
convert it in 2003 and then use 2005 to convert the 2003
Vuyiswa Maseko,
Sorrow is Better than Laughter, it may Sadden your Face, but It sharpens your Understanding
VB.NET/SQL7/2000/2005
http://vuyiswamb.007ihost.com
http://Ecadre.007ihost.com
vuyiswam@tshwane.gov.za
|
|
|
|