|
Email.From will show up as Nothing, because you're stopping before you try to set it. Settings, however, should already be set.
Is "Settings" the name of a form class, or the name of a variable? If you've come from VB6, then you're probably used to them being the same thing... But that's one of the most important things you have to UNLEARN when moving to a real language...
If "Settings" is the name of your form class (Like at the top of the file, it says Public Class Settings Inherits Form ), then that's your problem right there. If this code is inside the Settings form, you can just use Me instead of Settings . If it's in another form, you have to do a little more work.
|
|
|
|
|
This is in Visual Basic 2008.
I'm trying to pull the text data from a form called Settings thats in this program but is it's own form.
It's called "Public Class Settings"
It only has text boxes to remember specific application settings. Like background image, email information, etc.
I have a list form called List. It's called "Public Class List".
This has checkboxes that the user can select and generate a list. When the user selects SendEmail button, it is hopefully going to email the list to them. Using the email credentials setup in the Settings form.
|
|
|
|
|
Ok, there's your problem... You can't access Settings , because Settings is the name of the class, not the name of the actual instance of that class.
What code are you using to display the Settings form?
|
|
|
|
|
I just made the settings form in Visual Basic 2008.
Just made 3 textboxes: txtSMTPServer, txtFrom, txtTo
They are all set to string[]array.
So you think that if i made these same 3 text boxes in my list form then it would work properly?
I can give it a shot.
|
|
|
|
|
You're really going to need to learn a little about object-oriented programming, otherwise you're not going to understand how this works, and you'll be back here tomorrow with a similar problem.
Where's the code that actually displays the Settings form?
|
|
|
|
|
Try changing the name of the form from "Settings" to something else. "Settings" is a common name used for various classes, some of them exposed as static, that could be screwing with your code.
Also, do not use text data directly from textboxs without validating it first.
When the breakpoint is hit, the yellow line shows you which statement is going to be executed next. If you hover the mouse over a variable name, it'll show you what the current value of that variable is.
|
|
|
|
|
Ok so I changed it from Settings to Prefs. Still no luck.
I'm starting to get discouraged because like you said when I hover the mouse over I see the variables. SMTPServer.Credentials shows nothing, SMTPServer.Host shows nothing as well. When I hover over the Email.To.Add it doesn't show anything at all, doesn't even outline the variable like the other ones do.
Also, when I go in and just change all the variables to the actual values I'm able to get past the lines. All the way down to SMTPServer.Send(Email) but it says "failure to send."
Is there a better or easier way to write this code?
As for validating the text boxes do you just mean running an if statement to make sure there is an actual value in them?
Thanks,
|
|
|
|
|
If everything says their are empty, I'm will to bet that you instantiated a second copy of your Settings (Prefs) form and are using the empty values from that, nor the one the user sees.
|
|
|
|
|
I haven't read the entire thread, but yet I am going to offer a wild guess:
did you instantiate your Settings Form more than once?
i.e. do you have more than one new Settings in all of your code?
if so, you are seeing and interacting with one, but your code is reading empty boxes from the other!
|
|
|
|
|
Luc,
Thanks for the reply.
I'm actually not using more than one New Settings in my code. This part of my code is the only part trying to read these boxes.
I'm wondering if I completely got rid of this code if there is a different way of going about it.
Thanks,
|
|
|
|
|
OK, then work your way through the problem, one step at a time.
step 1 would be making sure this works:
Private Sub SendEmail(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Console.WriteLine("txtTo.Text=" & Settings.txtTo.Text)
End Sub
then add similar statements until you hit the problem.
|
|
|
|
|
Ok so this is where the problem seems to be.
When it shows "txtTo.Text=" it shows nothing.
I double checked and confirmed that there is data in these text boxes.
Now I guess I have to figure out how to make point to the text boxes.
|
|
|
|
|
yep. It proves your problem is not related to e-mail, there is an overall problem of your objects not being what you think they are, such as the possibility of having more than one Form instance I mentioned earlier. I can't really help you any further as I have seen only a fraction of your code.
BTW: a similar situation would arise when you would accidentally have two textboxes at the same location, the top one being the one you see and edit, the bottom one being the one your code is referring to.
|
|
|
|
|
Yes you are correct.
I just tested the idea of having a different form with a text box name "ToBox". The form is called "XForm".
When I change the code from ("txtTo.Text=" & Settings.txtTo.Text) to ("txtTo.text=" & XForm.ToBox.Text) it shows the text.
Clearly there is some reason my text boxes aren't linking correctly.
Thanks for showing me how to test this idea.
Now I just have figure out what the deal is with the textboxes.
|
|
|
|
|
Also, when I change it to a different textbox in that same Settings form, it works.
Something fishy going on here.
Thanks for you help, I think I just need to start over with all of the textboxes.
|
|
|
|
|
a few more things:
1.
did you do or encounter anything strange while setting up your project? your form?
2.
assuming you use Visual Studio, did you edit one of the designer files? or move them around using Explorer?
FYI: what you design graphically gets translated in a code file, say Form1.designer.vb, which may or may not be hidden in your solution pane, depending on settings, or some buttons.
[ADDED] You are not supposed to edit those generated files! [/ADDED]
|
|
|
|
|
probably check the properties window and see what name is given to the text box there.....it might be that the names are not matching with each other....
|
|
|
|
|
I have the following subroutine to load a listbox of database tables:
Private Sub DisplayDatabaseTbls(ByVal tblTables As DataTable)
lstTbls.Items.Clear()
For Each row As DataRow In tblTables.Rows
lstTbls.Sorted = True
lstTbls.DataSource = tblTables
lstTbls.ValueMember = "Table_Name"
lstTbls.DisplayMember = "Table_Name"
Next
End Sub
This works just fine until I deside to select a differnt database, then I get the error:
Items collection cannot be modifed when the datasource property is set.
I understand it will not let me repopulate the listbox while it is bound to a datasource.
What I want to know is how I can disconnect the datasource, and clear the listbox. In VB6 all you had to do was Listbox1.Clear.
Thanks is advance
Quecumber256
|
|
|
|
|
Have you tried lstTbls.DataSource = Nothing ?
To me that looks to be the opposite of lstTbls.DataSource = someDataSource
|
|
|
|
|
Luc,
That did it. All I did was place lstTbls.DataSource = Nothing at the top of the subroutine. So whenever I changed databases it will disconnect the datasource, then clear the list box, and reconnect the datasource and repopulate the listbox.
Thanks this helped a bunch.
Quecumber256
|
|
|
|
|
What is software self check?
How can wirte software self check in VB.net?
plz....thz....
|
|
|
|
|
phowarso wrote: What is software self check?
A general checkup on the validity of the software, I guess.
phowarso wrote: How can wirte software self check in VB.net?
Depends on what you need. Sometimes it's enough to simply compute a hash from the files that you have, other times you'd might want to check the availability of the database and the validity of the backupfiles.
What part of your software has healthconcerns?
I are Troll
|
|
|
|
|
how can read the sector (eg: sector number 150 to 200) on a CD directly in VB.net?
please help me...thz....
|
|
|
|
|
Read up on CreateFile[^]. I think the section you're interested in is about half way down, under "Physical Disks and Volumes". There is no ".NET way" to do this. You have to P/Invoke the Win32 functions directly to accomplish this.
There an article here [^]on CP about it, but it's not written very well.
and a quick Google for "read disk sectors vb.net" comes up with these[^].
|
|
|
|
|