Random & DataGridView

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von lordknoblauch.

    Random & DataGridView

    Hi,
    ich habe ein kleines Problem mit .Next().
    Ich will nämlich gerne eine Zufallszahl mit Kommastellen. Also ginge ja .NextDouble . Aber da kann ich nicht einstellen, zwischen welchem bereich die Zahl ist. Mit:

    VB.NET-Quellcode

    1. Public Preis As Double
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. Dim r As New System.Random
    4. Preis = Math.Round(r.NextDouble, 2)
    5. If Preis > 0.5 Then
    6. Preis = 0.49
    7. End If
    8. If Preis < 0.2 Then
    9. Preis = 0.2
    10. End If
    11. TextBox1.Text = Preis
    12. End Sub


    Ist die Zahl ziemlich oft gleich...

    -------------------------
    Zum DataGridView:
    Kann man irgendwie ausstellen, dass man die Zeilen sortieren kann? Also dass sie fest an einer Position stehen und auch immer dort stehenbleiben :| ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pes2009.vb“ ()

    Vielen Dank, das funktioniert, ich nehme zwischen -2 und 10 und teile durch 1000 ;)

    Hier noch eine Frage zum DataGridView:

    Kann man irgendwie ausstellen, dass man die Zeilen sortieren kann? Also dass sie fest an einer Position stehen und auch immer dort stehenbleiben?

    EDIT: Passt jetzt zwar hier nicht rein, aber kann man eine Aktion ohne Timer verzögern? Also auf einen Button klicken und nach 5 sec kommt eine msgbox zb?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pes2009.vb“ ()

    Pes2009.vb schrieb:

    EDIT: Passt jetzt zwar hier nicht rein, aber kann man eine Aktion ohne Timer verzögern? Also auf einen Button klicken und nach 5 sec kommt eine msgbox zb?
    du kannst z.b. über

    VB.NET-Quellcode

    1. Threading.Thread.Sleep(5000)


    das komplette programm für 5sek auf eis legen (da reagiert es aber überhaupt nicht mehr).

    oder du bastelst dir eine eigene wait()-funktion

    VB.NET-Quellcode

    1. Private Sub wait(ByVal secs As Integer)
    2. For i = 0 To secs * 10
    3. Threading.Thread.Sleep(100)
    4. Application.DoEvents()
    5. Next
    6. End Sub


    oder das ganze mit einer stopuhr

    VB.NET-Quellcode

    1. Private Sub wait(ByVal interval As Integer)
    2. Dim sw As New Stopwatch
    3. sw.Start()
    4. Do While sw.ElapsedMilliseconds < interval
    5. Application.DoEvents()
    6. Loop
    7. sw.Stop()
    8. End Sub
    WTFier findet DoEvents()... das ist nicht gerade die schöne Art. Ein guter Weg wäre hier vllt. System.Timers.Timer, welcher mit AutoReset auf False das Elapsed-Ereignis nur einmal auslöst. Allerdings musst man im Elapsed-Event ggf. BeginInvoke() aufrufen.

    Viele Grüße, Phil.

    YaPh1l schrieb:

    WTFier findet DoEvents()... das ist nicht gerade die schöne Art. Ein guter Weg wäre hier vllt. System.Timers.Timer, welcher mit AutoReset auf False das Elapsed-Ereignis nur einmal auslöst. Allerdings musst man im Elapsed-Event ggf. BeginInvoke() aufrufen.

    Viele Grüße, Phil.
    EDIT: Passt jetzt zwar hier nicht rein, aber kann man eine Aktion ohne Timer verzögern? Also auf einen Button klicken und nach 5 sec kommt eine msgbox zb?
    da bleiben nicht mehr viele elegante lösungen und ohne DoEvents() wird das kaum was (ohne das komplette programm zu freezen).