| |
VB.NET - Ein- und UmsteigerRe: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 03.09.12 20:31 |
| schon gelöst
Auslöser: Public Event DataReceived As SerialDataReceivedEventHandler Lösung: Do While SerialPort.BytesToRead() > 4
ReceiveUSB = SerialPort.ReadLine() das liegt im TimerEvent
und wird alle 250ms aufgerufen
kleinstes Paket vom USB Gerät ist 4Bytes lang (+LFCR) also 6Byte
hatte mir gedacht, das das sonst meine Fähigkeiten übersteigt
Beitrag wurde zuletzt am 03.09.12 um 20:32:59 editiert. | |
Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 01.09.12 10:41 |
| Hi Leute,
Ich komme eigentlich aus der C(ohne +) Ecke, das mal vorne weg.
Zur Steuerung meiner Wakü habe ich mir ein 5¼ Einschubgerät gebaut,
das wird über einen FT232R via USB angesprochen, das klappt schon ganz gut.
Da der Code in meinem VB Programm langsam unübersichtlich wird, muss ich
Funktionelle Blöcke in andere Dateien im Project auslagern.
Es scheint das ich dabei irgendwas falsch mache, VStudio findet beim Compilieren
die SUBs nicht mehr, die ich aufrufen will.
Einen INCLUDE Befehl gibts hier ja nicht, wie zur Hölle geht das dann?
Wäre schön wenn mir, altem Sack, das so erklärt werden könnte, das ich auch verstehe....
Gruß
Stephan
Beitrag wurde zuletzt am 01.09.12 um 10:44:15 editiert. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sv00010 | Datum: 01.09.12 12:11 |
| Ein neues Modul hinzufügen und dort den Code einfügen und dann dort wo du ihn brauchst aufrufen.
Am besten du postest mal ein bisschen Code. 0 | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: Manfred X | Datum: 01.09.12 13:15 |
| Hallo!
Funktionelle Blöcke?
Du programierst offenbar nicht objektorientiert (Klassen),
sondern erstellst Routinen. In dem Fall kannst Du den Code von
Routinen - wie bereits von sv00010 erwähnt - in eine Moduldatei
innerhalb Deines Projekts stellen ("Public") und direkt aus
anderen Modulen aufrufen.
Du kannst aber auch den Modulnamen beim Aufruf davorsetzen oder
Namespaces nutzen - das ist übersichtlicher.
Du kannst Code-Teile (Klassen/Routinen) auch
in ein oder mehrere Projekt(e) des Typs Klassenbibliothek auslagern.
Auf diese Bibliothek wird im anwendenden Projekt ein Projektverweis
gesetzt. Namespaces und Klassen in der Bibliothek kannst Du
entweder im Code "voll qualifiziert" (z.B. Bibliothek.Namespace.Klasse)
ansprechen oder per Imports-Anweisung importieren.
Bei Verwendung mehrerer Formulare solltest Du Dich zunächst mit
den Grundlagen des OOP vertraut machen.
Du kannst innerhalb Deines Hauptformulars Instanzen von weiteren
Formularen mit dem Schlüsselwort New erstellen.
Werte übergibst Du aus dem Hauptformular an untergeordnete Formulare
am besten durch das Einrichten von Eigenschaften im untergeordneten
Formular.
MfG
Manfred
Beitrag wurde zuletzt am 01.09.12 um 13:19:00 editiert. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 01.09.12 14:24 |
| Manfred X schrieb:
Zitat: | | Hallo!
Funktionelle Blöcke?
Du programierst offenbar nicht objektorientiert (Klassen),
sondern erstellst Routinen. | |
Jup, Klassen und Methoden kennt C nicht, erst C+, das kenne ich aber nicht...
Mit funktionelle Blöcke meine ich aber, eine eigene Datei in der zB. der ganze USB
Kram gemacht wird, Senden Empfangen etc, die nenne ich der Übersicht halber USB.vb,
damit muss ich nicht lang suchen wo es in meinem Code steht.
Das selbe dann für alle WMI Aufrufe >> WMI.vb, für jeden meiner 4 Regel Kanäle, dann noch ein eigenes Channel1.vb bis Channel4.vb, damit hab ich dann das Form1.vb mit seiner Code Datei plus 10 zusätzliche .vb's. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 01.09.12 17:13 |
| was neues lernen, an sich schon...
aber, ich brauch das Prog schnell, deshalb quick, dirty und Vbasic,
sonst wäre die Sprache der Wahl C++ gewesen, die Zeit alles zu lernen hab ich grade aber nicht. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 01.09.12 20:55 |
| im Prinzip hast Du schon recht,
mir bleibt neben meinem Job aber kaum Zeit über.
6 Tage Woche 12h - 15h Täglich, Familie wäre dann auch noch da...
am meisten Zeit hätte ich während der Nachtschicht, so ab 0200,
muss nur raus wenn was passiert.
deshalb muss ich leider passen, was neues lernen angeht, zumindest im Moment
Beitrag wurde zuletzt am 01.09.12 um 20:57:27 editiert. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 02.09.12 13:07 |
| Also, ich blicks echt ned.
Das ist der Anfang von Form1.vb
Public Class MAIN
Shared TempCPUValue As Single, TempMoBoValue As Single, TempGPUValue As _
Single, ReceiveUSB As String
Shared HPFCUpdateRequest As Byte = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Timer1sec.Enabled = True
GroupBoxPC.Text = Environment.MachineName
End Sub
Private Sub Timer1sec_Tick(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Timer1sec.Tick
WMITEMPERATURES()
If HPFCUpdateRequest = 0 Then
Else
End If
End Sub Jetzt hab ich mir noch eine Module1.vb erstellt
Module Module1
Public Sub WMITEMPERATURES()
Dim p() As Process = Process.GetProcessesByName("OpenHardwareMonitor")
If p.Length > 0 Then
HStatusHWMonitor.Image = HPFCMonitor.My.Resources.Resources.BGreen
Dim objMgmt As System.Management.ManagementObject
Dim SensorName As New System.Management.ManagementObjectSearcher( _
"root\OpenHardwareMonitor", "SELECT * FROM Sensor")
For Each objMgmt In SensorName.Get
If objMgmt("Name") = "CPUHPFC" Then
TempCPUValue = objMgmt("Value")
TempCPU.Text = objMgmt("Value") & " °C"
End If
If objMgmt("Name") = "MotherboardHPFC" Then
TempMoBoValue = objMgmt("Value")
TempMoBo.Text = objMgmt("Value") & " °C"
End If
If objMgmt("Name") = "GPUHPFC" Then
TempGPUValue = objMgmt("Value")
TempGPU.Text = objMgmt("Value") & " °C"
End If
Next
Else
StatusHWMonitor.Image = HPFCMonitor.My.Resources.Resources.BRed
End If
End Sub
End Module Gleich mal der erste Fehler ist: HStatusHWMonitor wurde nicht Deklariert
wurde er natürlich schon, im Form1.vb, da ist es ein StatusLabel.
Ich weiß nicht, wie ich diese beiden Dateien zusammenführen kann, was fehlt?
Es reicht offensichtlich nicht die Module1.vb nur zum Projekt hinzu zufügen.
Selbes Problem natürlich bei jeder anderen Datei, außer ich lass die 2. Datei ebenfalls mit: Class MAIN
beginnen, dann bringt er mir aber die Warnung, Klasse gibts schon.
Sagt mir bitte, was für Anweisungen mir fehlen um das zum funktionieren zu bringen.
Seht von: Lies ein VB Buch/ schau nach OOP/ lern erst mal x, y; ab, die Zeit hab ich leider nicht.
Immerhin such ich schon eine ganze Weile, vielleicht versteh ichs auch einfach nicht.
Was mir helfen würde:
Du musst das "Code xxx" bei "Stelle Z" einfügen, weil damit "blabla" gemacht wird. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: DaveS (Moderator) | Datum: 02.09.12 15:11 |
| Du kannst dein Form-Objekt (Instanz einer Klasse!) mit Form1.HStatusHWMonitor ansprechen (oder vielleicht MAIN.wasimmer, es ist nicht ganz klar wie die Klasse heißt). Wird aber hier nicht empfohlen, aber was zu tun wenn du nichts lernen willst?
Allerdings wäre es viel sinnvoller "reine" Routinen auszulagern, eben nur welche, die die Form nicht ansprechen, da solche Routinen nur mit dieser bestimmten Form-Klasse zusammenarbeiten können, und daher eher logisch zum Form-Code gehören.
Besser übergibst du Werte aus der Form als Parameter, und lieferst aus deinen Unterroutinen Werte zurück, die dann der Code in deiner Form bestimmten Controls (Labels usw.) zuordnet.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 02.09.12 16:03 |
| DaveS schrieb:
Zitat: | | aber was zu tun wenn du nichts lernen willst? | |
triffts nicht so ganz; lernen beansprucht Zeit, die ich leider nicht hab
#Region hilft mir zumindest das ganze etwas übersichtlicher zu gestalten,
irgendwie konnte mir keiner mit einfachen Sätzen erklären wie das funktioniert,
die msdn Hilfe ist schwer verständlich
aber Danke für all die mühe | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: FZelle (Moderator) | Datum: 02.09.12 21:02 |
| sBronco schrieb:
Zitat: | |
triffts nicht so ganz; lernen beansprucht Zeit, die ich
leider nicht hab
| |
Das ist falsch, denn deine Uneinsichtigkeit zu lernen hat jetzt schon 1 1/2 Tage verschwendet. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 02.09.12 21:08 |
| #Region kam von mir, bezüglich Übersichtlichkeit
DaveS schrieb:
Zitat: | | Und zum Tipp und den Vorschlägen wie du deinen Code
verbessern könntest hast du nichts zu sagen und keine Fragen?
| |
Klassen usw. wurden in den Raum geworfen, davon hatte ich aber bereits gehört,
allerdings keine Ahnung wie genau es funktioniert, ich es [u]genau verwenden kann,
die Hife Funktion und Google, sowie diverse andere Foren haben da leider auch nichts gebracht.
Kann auch an mir liegen, einfach keinen Kopf und keine Zeit mich hinzusetzen und erst mal 2 Wochen
die Grundlagen zu lernen, also Proge ich so wie ichs kann, C Stile halt. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 02.09.12 21:11 |
| By the way, mein Programm ist zu 90% fertig und läuft, sobald ich den neuesten sporadisch auftretenden
Fehler:
Ungültiger threadübergreifender Vorgang in den Griff bekomme. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: keco | Datum: 03.09.12 13:47 |
| Wenn du das Programm fast fertig und einen solchen Fehler hast, dann kann es im ungünstigen Fall deine gesamte Architektur ruinieren, weil du den Fehler nicht so einfach beheben kannst.
Dann darfst du von vorne anfangen. Zumindest hatte ich das Problem häufig in meiner Anfangszeit, als mein Verständnis noch nicht so gut ausgeprägt war. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 03.09.12 22:27 |
| was ich gesucht habe, hab ich jetzt selbst gefunden.
Partial Public Class MAIN ermöglicht mir exakt was ich wollte,
jetzt ist alles Teil der MAIN Klasse aber auf
Funktionelle Blöcke verteilt,
zB. MAIN.vb, WMI.vb, USB.vb, Channel1.vb, etc etc | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 04.09.12 21:25 |
| Für meine Zwecke ist es Sinnvoll strukturiert.
Schreib ja keinen Spaghetticode.
Wenn ich irgendwann mal Zeit hab, lern ich den Rest. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: FZelle (Moderator) | Datum: 04.09.12 23:51 |
| Das siehst nur du so. | |
Re: Wie kann ich in einem Project, mehrere Formulare benutzen ? | | | Autor: sBronco | Datum: 05.09.12 07:12 |
| na dann | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|