leider ist die betreffende stelle im code nicht angesprungen worden, das war ja das problem.
na egal, ich hab ein neues projekt erstellt und den alten code teilweise kopiert, jetzt gehts wieder.
Nach dem "InitializeComponents" durchgelaufen ist, sind alle Componenten verfügbar und nutzbar, also alles was nach diesem Funktionsaufruf kommt, greift auf valide Components zu.
angenommen, alle haben dieselbe methode zugewiesen, erkenne ich dann anhand des
object sender parameters, welcher comport sich gemeldet hat?
ganz genau so ist es.
Firefighter schrieb:
-com-:Blödsinn. Die Komponenten werden IMMER mit "new" hinzugefügt. Mit dem Designer und dem "draufziehen" wird das nur in einer Code-Behind(desinger.cs) mit new erzeugt.
ok, designer.cs kannte ich noch nicht, wieder dazugelernt, coole sache das!
Rhombicosidodecahedron schrieb:
so?
Weiss nicht. Schön wäre es, wenn man der Klasse Serial.Port irgendwie ne Struktur übergegen könnte und diese Struktur dann mit serialPort1.Read(&my_struct) füllen könnte.
Naja, für heute mache ich jetzt aber mal Feierabend!
hab mir das mal bei MSDN angeschaut und mein Verbindungsaufbau abgeändert. Datenbankverbindung funktioniert auch. SO sollte es besser sein oder?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; //Bekanntmachung des Namensraums für den SqlClient-Datenprovider
namespace DatenbankMitADO
{
public partial class Form1 : Form
{
SqlConnection verbindung = null;
SqlCommand befehl = null;
SqlConnectionStringBuilder conBuilder = new SqlConnectionStringBuilder();
public Form1()
{
InitializeComponent();
conBuilder.DataSource = ".\\SQLExpress";
conBuilder.IntegratedSecurity = true; //Windows-Anmeldung zur Authentifizierung
conBuilder.AttachDBFilename = "C:\\Users\\Andreas\\Desktop\\DatenbankProjekt\\DatenbankMitADO\\Database1.mdf";
conBuilder.UserInstance = true;
using (verbindung = new SqlConnection(conBuilder.ConnectionString))
{
try
{
verbindung.Open();
MessageBox.Show("DB-Verbindung erfolgreich hergestellt");
}
catch (Exception ex)
{
MessageBox.Show("Fehler: " + ex.Message, "Datenbankfehler");
}
}
}
private void button1_Click_1(object sender, EventArgs e)
{
using (verbindung = new SqlConnection(conBuilder.ConnectionString))
using (befehl = new SqlCommand(textBox1.Text, verbindung))
{
try
{
verbindung.Open();
textBox2.Text = befehl.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show("Fehler: " + ex.Message, "Datenbankfehler");
}
}
}
private void button2_Click_1(object sender, EventArgs e)
{
using (verbindung = new SqlConnection(conBuilder.ConnectionString))
using (befehl = new SqlCommand(textBox3.Text, verbindung))
{
try
{
verbindung.Open();
befehl.ExecuteNonQuery(); //schickt SQL-Kommando ab
MessageBox.Show("Kommando erfolgreich abgeschickt");
}
catch (Exception ex)
{
MessageBox.Show("Fehler: " + ex.Message, "Datenbankfehler");
}
}
}
}
}
DarthZiu schrieb:
Noch ne Frage dazu: Wenn ich das so mache, wie ihr schreibt, dann muss trotzdem .NET auf dem System installiert sein, weil der DLL-Code dann immer noch in CLI ist?
Logischerweise ja. Nur weil du den Aufruf in einer anderen Sprache machst, gelten ja nicht andere Abhängigkeiten.
DarthZiu schrieb:
Okay. Gibt's da irgendwo ein Tut oder Beispiele, wie man das mit dem COM oder C++/CLI-Wrappern macht? Würde mir das gern anschauen, bevor ich eine Entscheidung treffe.
Zu COM sollte einiges existieren (und ich kann dir sagen: mit C++ fand ich COM immer schrecklich), und zu C++/CLI ist es eigentlich ganz einfach gesagt (aber mühsam umzusetzen): Verpasse der C++/CLI-Wrapper DLL ein C-Kompatibles Interface (Sprich: Keine Klassen, nur Datentypen die in C erlaubt sind...), und steuere innerhalb dieser dll die C#-Dll an. C++/CLI ist eine Sprache die ins besondere für die Schnittstelle zwischen der managed und nativen Softwarewelt geeignet ist, da sie beides versteht.
So viel ich weiß kann man die "unsafe" Zeiger nur mit bestimmten Datentypen benutzen (d.h. byte, int, etc.) und nicht allgemein für jede beliebige Managed-Struktur.
s.a. http://www.codeproject.com/KB/dotnet/ReadingStructures.aspx (Solution Attempt 4: Unsafe Generic Approach)
Danke schonmal:) Ja ich hab mein Projekt vor langem mal auf nen rechner getan, und wollte wissen, ob ich damls die Debug odre Release version verwende habe:)
So, noch einmal in richtiger Form und diesmal mit Account
Super, danke jetzt funktioniert es.
Lösung: Einfach den Code in das MouseDown-Event reinpacken, wie Th69 es gesagt hat.
private void listBoxAll_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
string[] files = new string[listBoxAll.SelectedItems.Count];
int i = 0;
foreach (var item in listBoxAll.SelectedItems)
{
files[i] = m_SearchedFiles[listBoxAll.SelectedIndices[i]].Name;
i++;
}
DoDragDrop(new DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy);
}
}
VG
Was willst du? Willst du das programmatisch machen oder was willst du? Willst du nur ne Textdatei öffnen und sie einlesen oder die Textdatei anzeigen? Beschreib mal vernünftig was du willst, wird ja kein Mensch schlau drauß.
ja mit dem kann ich mich verbinden.
Habs grad hinbekommen mit einem anderen conn-string:
const string verbindungsstring =
// Attribute der Verbindungszeichenfolge:
"Data Source = .\\SQLExpress;" +
"AttachDbFilename = C:\\Users\\Andreas\\Desktop\\DatenbankProjekt\\TestDB.mdf;" +
"Integrated Security = True;" +
"Connect Timeout = 30;" +
"User Instance = True;";
So funktioniert es. Vielen Dank für den Tipp.