Ich möchte eine Funktion mit folgender Definition aufrufen:
[DllImport("FTD2XX.dll")] public static extern int FT_Write(int handle, char* buffer, int BytesToWrite, int* BytesWritten);
Hierzu möchte ich einen Buffer mit 5 deklarieren:
char[] buffer = new char[5];
Dann setze ich den Buffer.
buffer[0] = (char)0x7E;
buffer[1] = (char)10;
buffer[2] = (char)0;
buffer[3] = (char)0;
buffer[4] = (char)0xE7;
Und übergebe dann die Adresse zur Funktion:
int c = FTDI.FT_Write(handle,&buffer,5,&bytesWritten);
Beim Kompilieren kommt dann eine Fehlermeldung:
Argument '2': kann nicht von 'char[]*' zu 'char*' konvertiert werden
Was mache ich falsch und wie soll ich es richtig machen?
@george: Mein Event hat aber folgende Parameter:
private void pictureBox1_DoubleClick(object sender, System.EventArgs e)
Einfach ändern kann ich den zweiten Parameter ja nicht, dann bringt der Compiler ne Fehlermeldung (eigentlich auch klar). Wie erreicht man, dass hier die Mausposition übergeben wird?
Das hoffte ich auch. Mit Control.Mousposition.X bekomme ich aber wohl die absolute Mausposition auf dem Bildschirm. In der linken oberen Ecke kriege ich Werte um 100px ... Außerdem ändert sich der Wert auch, wenn ich die Maus im Einzelschrittmodus bewege.
In Visual Basic gab es im Klickereignis die Parameter X und Y. Genau das meine ich eigentlich. Diese ändern sich auch nicht mehr, sondern geben die Position an, wo der Klick erfolgt ist.
Oder muss ich evtl. die osition der PictureBox und des Formulars mit einbeziehen?
Ich habe eine - hoffentlich ganz einfach zu beantwortende - Frage.
Ich will in einem Doppelklickereignis auf einer PictureBox die Mauskoordinaten des Klicks abfragen (nicht die globalen, sondern die relativen zum Klick). Wie bekomme ich die?
@george: Du hast Recht. Aber ich will Werte in der Größenordnung von 1000-10000 möglichst exakt anfahren, aber auch schnell anfahren können.
Ich würde schon gerne unterschiedliche Werte hierfür verwenden ...
Dann akzeptiere ich lieber noch die Tatsache, dass ich jeweils 9 zum Maximalwert hinzufügen muss ...
Wenn ich in C# eine hScrollBar folgendermaßen einstelle, kann ich durch Bedienung der Scrollbar immer nur 9 unterhalb des Maximums als Maximum erreichen.
Hab ich das richtig verstanden. Wenn ich nun eine weitere Form als Dialog habe und hier z.B. die Daten für das neue Device eingebe und dann auf OK klicke, dann soll ein Event in der Hauptform aufgerufen werden, dass dann die entsprechenden Daten setzt?
Ok - kannst du vielleicht ein kleines Beispiel machen, wie das mit den Events fuinktioniert? Ich habe bisher noch nicht damit gearbeitet.
In der Klasse Sequence gibt es eine Funktion add_device(). In dieser Funktion wird zur ArrayList device ein neues Element hinzugefügt. Jetzt soll automatisch die Listbox aktualisiert werden.
Vielleicht kannst du mir auch eine Seite empfehlen, wo das Handling von Events und EventHandler beschrieben wird.
Wie du vielleicht gemerkt hast, programmiere ich noch nicht lange in C#. Zwar habe ich bereits Jahre in C++ und Visual Basic und Delphi programmiert, aber C# ist mir noch recht unbekannt.
Ich habe folgendes vor:
Ich habe vier Klassen (cPROJECT, cSEQUENCE, cDEVICE, cPOINT). Ich will in jede dieser Klassen eine ArrayList mit der untergeordneten Klasse erzeugen. Also jedes Projekt soll mehrere Sequenzen haben, jede Sequenz mehrere Geräte und jedes Gerät mehrere Punkte.
Wenn ich nun dynamisch durch eine Funktion zu einer Sequenz ein Gerät hinzufüge, möchte ich, dass automatisch in einer Listbox auch das neuhinzugefügte Element reinkommt. Das wollte ich eigentlich nciht in den Button schreiben, sondern in die Funktion der Klasse, so dass das automatisch funktioniert.
Klar - in den Button kann ich die Routine auch reinschreiben. Aber dann muss diese auch in jeden Button rein, was zusätzlich Code verursacht.
Eine andere Frage noch. Wie kann ich eine zweite Form anzeigen lassen?!
Ich habe eine Funktion in einer Klasse und möchte von dieser Funktion aus auf ein Steuerelement einer Form zugreifen.
Mit Form1. erhalte ich die Steuerelemente nicht (ist ja auch richtig - bei Form1 handelt es sich ja um die Klasse selbst, nicht um die Instanz). Aber wie kann ich auf die Instanz der Form zugreifen und ein Steuerelement verändern?