Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Απορίες στην VB.NET...

Îåêßíçóå áðü ôï ìÝëïò Thanasis. Τελευταία δημοσίευση από το μέλος Thanasis στις 13-12-2005, 00:36. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-12-2005, 09:14 7828

    Απορίες στην VB.NET...

    Καλημέρα,
    Χρησιμοποιώ την VB.NET για να αναπτύξω ένα πρόγραμμα για μια εργασία που έχω στο STUDIO .NET 2003 και έχω μερικές ερωτήσεις:

    1. Χρησιμοποιώ το ακόλουθο τμήμα κώδικα για να μπορώ να διαβάσω και να γράψω από ένα φύλλο του Excel:

    Dim oExcel As Object = CreateObject("Excel.Application")
    Dim oBook As Object = oExcel.Workbooks.Open(file)
    Dim oSheet As Object = oBook.Worksheets(1)

    Όμως το πρόγραμμα όταν  καλείται η πρώτη εντολή του προηγούμενου τμήματος κώδικα παγώνει για 5 με 10 sec. Δηλαδή φαίνεται ότι πρόγραμμα κολλάει. Υπάρχει κάποιος τρόπος να πληροφορώ τον εκάστοτε χρήστη του προγράμμα τος ότι προγράμμα θα καθυστερήσει για λίγο; Δηλαδή να βάλλω μια progress bar, ο κένσορας να έχει τη μορφή κλεψύδρας ή κάτι άλλο; Προς το παρόν έχω βάλλει ένα Message Box που ενημερώνει το χρήστη ότι θα παρειμένει για λίγο.

    2. Πως μπορώ να βάλλω ένα progress bar control μέσα σε ένα status bar control;

    3. Θέλω να βάλω ένα εικονίδιο στο πρόγραμμα στη θέση του default που έχει. Οπότε χρησιμοποιώντας το MS Paint έφτιαξα μια εικόνα διαστάσεων 32x32 και το μετονόμασα με κατάληξη .ico. Όταν πάω να το βάλλω ως εικονόδιο στη  φόρμα μου το Studio μου βγάζει το ακόλουθο μήνυμα: "The argument 'picture' must be a picture that can be used as icon.". Τι μπορώ να κάνω;

    4. Χρησιμοποιώ ένα text box (όπως και όλος ο υπόλοιπος κόσμος...) για να εισάγω ένα όνομα και θέλω όταν πατάω enter να βγαίνει ένα μήνυμα της μορφής: το όνομα σου είναι... (μέσα από ένα MessageBox). Πως μπορώ να το κάνω αυτό;

    Ευχαρηστώ για το χρόνο σας να διαβάσετε τις απορίες μου!


  •  12-12-2005, 11:08 7831 σε απάντηση της 7828

    Απ: Απορίες στην VB.NET...

    Φίλε Θανάση,
    απαντήσεις:
    1.
    me.Cursor = Cursrors.WaitCursor; // will give you the wait cursor
    me.Cursor = Cursrors.Dafaultr; // Do that to the end of the function.για να μην σου μεινει ο κερσορας στο wait.
    Δεν γνωρίζω τροπο για να δειχνεις με progress bar ( θέλει start and end νούμερα ) την αργοπορία μιας εντολής.

    2. Βάλε ενα πάνελ μεσα στην status bar και εκει μέσα την progress.

    3.
    Do this for your image :
    Icon myIcon = System.Drawing.Icon.FromHandle(((Bitmap)Βάλε την image σου εδω).GetHicon());

    4. στο keyDown event βάλε τον ακολουθο κώδικα:
    if (e.KeyCode == Keys.Enter)
    {
    δέιξε το messageBox εδω
    }
    Ελπίζω να βοήθεισα
    Happy coding
    "Success is the ability to go from one failure to another with no loss of enthusiasm."
    Winston Churchill

    "Quality means doing it right when no one is looking."
    Henry Ford

  •  12-12-2005, 13:34 7837 σε απάντηση της 7831

    Απ: Απορίες στην VB.NET...

    Σχετικά με την ερώτηση για την progress bar, δεν μπορείς να έχεις γενικά progress bar αν το call που κάνεις είναι blocking, δηλαδή αν δεν έχεις τουλάχιστον κάποιο event που να σε ενημερώνει για την πρόοδο της κλήσης.

    Ενα (μπακαλίστικο) σενάριο γενικά που παίζει σε τέτοιες περιπτώσεις είναι το εξής:
    - Βαζουμε την κλήση να εκτελείται από άλλο thread
    - Υπολογιζουμε περίπου πόσο χρονο θα μας πάρει
    - Εμφανίζουμε ένα progress bar για όση ώρα κρατάει η κλήση το οποίο ενημερώνεται "ψεύτικα" (δηλ. με custom κωδικα, χωρίς να δείχνει το πραγματικό progress της κλήσης).

    Βεβαια αυτό είναι....τουλάχιστον κακό, για να μην πω κατι χειρότερο, αλλά σε τέτοιες περιπτώσεις φοβάμαι οτι δεν υπάρχουν πολλές επιλογές.

    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  12-12-2005, 23:11 7858 σε απάντηση της 7828

    Απ: Απορίες στην VB.NET...

    Α) Καλο θα ήτανε να κάνεις update το interface με άλλο thread και οχι απο το main thread γιατι και πάλι το πρόγραμμα θα φαίνεται σαν παγωμένο εάν ο χρήστης κάνει κλικ πάνω στο UI σου, όσο τα 5-10 secs δεν έχουν περάσει, γιατί το main thread είναι απασχολημένο.
    Όσο για το progressbar είναι αυτό που είπε ο Σωτήρης..δυστυχώς αλλα δεν μπορείς να ξέρεις τον χρόνο εκτέλεσης, βάζει έναν neverending progressbar όπως έχει στα Vista (αν έτυχε να δεις) που πηγαινοέρχεται το bar δεξία και αριστερά.Υπάρχουν έτοιμα components γιαυτό το πράγμα.

    In addition στον Νάσσο:
    Messagebox.Show("Titlos","Το όνομά σου είναι: " & TextBox1.Text.Trim)

    Για να το το διαβάσεις απο το TextBox σου (όπως λέγεται αυτό).

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  13-12-2005, 00:36 7872 σε απάντηση της 7858

    Απ: Απορίες στην VB.NET...

    Ευχαρηστώ παιδιά!
    Η Βοήθειά σας ήταν πολύτιμη.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems