Laden...
J
JK_net
myCSharp.de - Member
79
Themen
187
Beiträge
Letzte Aktivität
vor 18 Jahren
Dabei seit
09.02.2005
Alter
43
Beruf
Fachinformatiker Anwendungsentwicklung
Erstellt vor 18 Jahren

Vielen Dank für die ganzen Antworten!

Werde damit bestimmt fündig!

Erstellt vor 18 Jahren

Hallo,

ich habe folgende Codeschnippsel, die ich gerne nach C# umgewandelt haben möchte...

Public Sub ExecuteQuery()
        AddHandler oOracleReader.QueryCompleted, AddressOf QueryCompleted
        ThreadQuery = New System.Threading.Thread(AddressOf oOracleReader.ExecuteQuery)
        ThreadQuery.IsBackground = True
        dStartTime = DateTime.Now
        ThreadQuery.Start(texteditorQuery.Text)
        strStatus = "Executing..."
    End Sub

    Public Sub InterruptQuery()
        oOracleReader.InterruptQuery()
        If Not ThreadQuery Is Nothing Then ThreadQuery.Abort()
        ThreadQuery = Nothing
        strStatus = "Execution aborted..."
    End Sub

    Public Sub QueryCompleted()
        If Me.InvokeRequired Then
            Dim d As New BindDatagrid(AddressOf BindDatagridHandler)
            Invoke(d)
        Else
            BindDatagridHandler()
        End If
        ThreadQuery = Nothing
        oOracleReader.Clear()
    End Sub

    Private Sub BindDatagridHandler()
        Dim oDataset As DataSet = oOracleReader.Dataset        
        If Not oDataset Is Nothing Then            
            DataGridView1.DataSource = oDataset.Tables(0)
            DataGridView1.Show()
            dEndTime = DateTime.Now
            strStatus = oDataset.Tables(0).Rows.Count & " rows selected in " & System.Math.Round(dEndTime.Subtract(dStartTime).TotalSeconds, 3) & " seconds"
            Me.Cursor = Cursors.Default
        End If
    End Sub

Kann mir dabei jemand helfen?

Am wichtigsten sind eigentlich die Zeilen mit AddressOf...

Ich hoffe mir kann jemand dabei helfen...

Viele Grüße
Jens

Erstellt vor 18 Jahren

Ok, vielen Dank,
ich werde mal ein wenig weiter probieren... 😉

Erstellt vor 18 Jahren

Hallo,

ich bin dabei eine MDI-Anwendung zuschreiben.
Jetzt möchte ich gerne beim Laden von neuen Fenstern in diese MDI-Anwednung einen Splahscreen anzeigen, z.B. mit einer ProgressBar.

Da ich mit VS2005 arbeite, habe ich versucht den Backgroundworker zu verwenden. Aber bei meinem Code müsste ich den Splashscreen in das DoWork-Event auslagern, da ich beim Laden den Child-Fensters auf das Parent-Fenster zugreife, und das ganze ja in einem Thread ablaufen muss...

Allerdings habe ich Probleme mit dem Anzeigen des Splashscreens.

Könnt Ihr mir sagen, wie (an welcher Stelle) und wann der Aufruf erfolgen sollte?
Ich habe es bisher direkt am Anfang im Click-Event des Menüpunkts, über das das MDI-Child geladen wird. Dabei wird der Splashscreen leider nicht "sauber" angezeigt...
Woher weiß ich, wann die Form geladen ist? Und wie beendet man dann den Backgorundworker?

Ich hoffe ihr könnt mir helfen!

MfG
Jens

Erstellt vor 18 Jahren

Hallo zusammen,

das kann ich alles mit "ja" bestätigen.
Der Code wird aufgerufen, ohne Exception und es sind drei Icons vorhanden...

Oh, sorry, habe gerade gemerkt, dass der Fehler bei mir liegt... 🙁
Ich habe noch ein "Before_Expand" - Event, bei dem zusätzlich untergeordnete Knoten hinzugefügt werden.
Dort weise ich die Icons nicht zu...

Hat sich aber jetzt erledigt, es funktioniert...

Vielen Dank euch zwei trotzdem für die Bemühungen!!!

Viele Grüße
Jens

Erstellt vor 18 Jahren

Hallo,

ich möchte gerne nach dem Füllen eines TreeViews den einzelnen TreeNodes Icons zu weisen.

Mit folgendem Code funktioniert es leider nicht:

this.treeView.ImageList = this.imageList;
foreach (TreeNode node in treeView.Nodes)
{
  node.ImageIndex = 0;
  foreach (TreeNode table in node.Nodes)
  {
    table.ImageIndex = 1;
    foreach (TreeNode field in table.Nodes)
    {
      field.ImageIndex = 2;
    }
  }
}

Kann mir jemand weiterhelfen?
Ist es überhaupt Möglich, dies im nachhinnein zu machen?

Vielen Dank im Voraus!

Jens

Erstellt vor 18 Jahren

Das ist mein code für application:

private byte[] application;

private void btnSelectApplication_Click(object sender, EventArgs e)
{
  OpenFileDialog openFileDialog = new OpenFileDialog();
  openFileDialog.Filter = "(*.dll)|*.dll";
  if (openFileDialog.ShowDialog() == DialogResult.OK)
  {
    FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open);
    BinaryReader reader = new BinaryReader(fs);
    application = reader.ReadBytes((int)fs.Length);
    reader.Close();
    fs.Close();
  }
}

Das funktioniert auch und ich habe dann auch tatsächlich ein byte[]...

Erstellt vor 18 Jahren

Hallo,

ich versuche ein Feld im Sql Server 2005 (Datentyp image) mit einem byte[] (application) zu füllen. Leider schlägt das Ganze mit folgender Meldung fehl:

Excpetion:
"Failed to convert parameter value from a String to a Byte[]."

InnerException:
{"Invalid cast from 'System.String' to 'System.Byte[]'."}


this.sqlInsert = "INSERT INTO anwendung (object) " +
                       "VALUES (@Object)";
this.sqlCommand = new SqlCommand(this.sqlInsert, this.sqlConnection);

SqlParameter paramObject;
paramObject = new SqlParameter("@Object", SqlDbType.Image);
paramObject.Value = application;
this.sqlCommand.Parameters.Add(paramObject);

Kann mir jemand bei dem Problem weiterhelfen?
Die Exception wird beim ExcuteNonQuery geworfen...

Viele Grüße
Jens

Erstellt vor 18 Jahren

Hi,

Aber der Code den du gepostet hast ist nur ein kleines Beispiel oder?
Ich meine für das was in der Funktion steht ist es ja nun wirklich nicht so sinnvoll nen neuen Thread anzulegen 😉

Da hast du recht... Ich lade eine zweite Form zum Anmelden, aber das ist etwas mehr Code, deswegen habe ich ihn weggelassen...

Also, ich habe eure beiden Tipps mal ausprobiert und es funktioniert wunderbar.

👍 ! VIELEN DANK ! 👍

Viele Grüße
Jens

Erstellt vor 18 Jahren

Hallo,

in meiner Anwendung habe ich folgenden Code:

public FrmMain()
{
  InitializeComponent();
  Thread t = new Thread(new ThreadStart(this.login));
  t.IsBackground = true;
  t.Start();
}

private void login()
{
  try
  {
    this.Invoke(new loginDelegate(this.userLogin));
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message + "\r\n\r\n" + ex.InnerException);
  }
}

Ich möchte damit gerne die Methode "userLogin" in einem separaten Thread aufrufen.
Das Ganze funktioniert beim Testen aus Visual Studio heraus wunderbar und ohne irgendwelche Probleme.
Jedoch wenn ich die Anwendung separat starten möchte, egal ob als Debug oder Release - Version, erhalte ich folgende unschöne Fehlermeldung (siehe Anhang).

Leider habe ich aber keine Idee, woran das liegen kann, das es ja beim Debuggen sauber durchläuft und aus VS heraus, wie gesagt, auch ausführbar ist...

Könnt Ihr mir weiterhelfen?

Ich verwende Visual Studio 2005.

Viele Grüße
Jens

10 von 187 Beiträgen