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

 

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

Beep ενοχλητική υπόθεση

Îåêßíçóå áðü ôï ìÝëïò gmlogic. Τελευταία δημοσίευση από το μέλος KelMan στις 26-03-2007, 00:59. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-03-2007, 09:39 26810

    Geeked [8-|] Beep ενοχλητική υπόθεση

    Πως θα μπορούσαμε να μη ακούγετε το ενοχλητικό Beep όταν μεταφερόμαστε πχ από TextBox ή ToolStripTextBox σε επόμενο control

    Δηλ Όταν δίνουμε Enter ή Tab σε ένα TextBox ακούγετε το Beep.

    Ευχαριστώ

    George Matzouranis
  •  21-03-2007, 16:19 26820 σε απάντηση της 26810

    Απ: Beep ενοχλητική υπόθεση

    Σε πιο ενοχλητικό beep αναφέρεσαι; Και τι ακριβώς εννοείς "μεταφερόμαστε";

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  22-03-2007, 10:28 26849 σε απάντηση της 26820

    Απ: Beep ενοχλητική υπόθεση

    Δηλ Όταν δίνουμε Enter ή Tab σε ένα TextBox για να πάμε σε ένα επόμενο control ακούγετε  Beep

    Πώς μπορούμε να το αποφύγουμε αυτό ?

     


    George Matzouranis
  •  22-03-2007, 14:39 26863 σε απάντηση της 26849

    Απ: Beep ενοχλητική υπόθεση

    Δεν είναι normal συμπεριφορά αυτό.... Beep συνήθως ακούγεται όταν πας να κάνεις εισαγωγή invalid data σε κάποιο control, ή κάνεις κλικ σε μία φόρμα που έχει ανοίξει μία άλλη με ShowDialog()...
    για πες περισσότερα Smile

    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  23-03-2007, 01:43 26903 σε απάντηση της 26863

    Απ: Beep ενοχλητική υπόθεση

    Λοιπόν χρησιμοποιώ μια procedure για να μεταφέρωμε με Enter απο Control σε Control

      Private Sub Me_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.KeyPreview = True
      End Sub

     Private Sub Me_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
            If e.KeyCode = Keys.Escape Then
                Me.Close()
            End If
            If TypeOf Me.ActiveControl Is TextBox Then
                Dim NextControl As Boolean
                Select Case e.KeyCode
                    Case Keys.Enter
                        NextControl = True
                    Case Keys.Up
                        NextControl = False
                    Case Keys.Down
                        NextControl = True
                    Case Else
                        Exit Sub
                End Select
                'SelectNextControl(Me.ActiveControl, NextControl, True, True, True)
                SendKeys.Send("{TAB}")
            End If
        End Sub


    Όταν λοιπόν δίνω Enter μεταφέρετε απο Control σε Control αλλά ακούγετε και Beep
    Δεν ξέρω αν υπάρχη κάποιος άλλος τρόπος για αντικατάσταση του Tab με Enter Confused


    George Matzouranis
  •  23-03-2007, 08:33 26907 σε απάντηση της 26903

    Απ: Beep ενοχλητική υπόθεση

    Θα πρέπει να κάνεις override την OnKeyPress:

    Public Class BeeplessTextBox
       Inherits TextBox

       Protected Overrides Sub OnKeyPress(ByVal e As KeyPressEventArgs)
          If e.KeyChar = CType(ChrW(Keys.Enter), Char) Then
             e.Handled = True
          Else
             MyBase.OnKeyPress(e)
          End If
       End Sub
    End Class

     

     


    Vir prudens non contra ventum mingit
  •  23-03-2007, 10:05 26913 σε απάντηση της 26907

    Απ: Beep ενοχλητική υπόθεση

    Δηλαδή Μάνο προτείνεις μάλλον  δικό textBox(Control).

    George Matzouranis
  •  23-03-2007, 10:19 26916 σε απάντηση της 26913

    Απ: Beep ενοχλητική υπόθεση

    Ναι...

    Αν σε απασχολεί που έχεις ήδη τoποθετήσει τα TextBoxes, μπορείς πολύ εύκολα με ένα find & replace (και με ενεργοποιημένο το option "Search Hidden Text")  να βρεις όλα τα System.Windows.Forms.TextBox σε {YourProjectName}.BeeplessTextBox


    Vir prudens non contra ventum mingit
  •  24-03-2007, 21:24 27015 σε απάντηση της 26916

    Απ: Beep ενοχλητική υπόθεση

    Ok Δουλεύει μια χαρά το Override σε ένα Custom TextBox
    Όμως επειδή την μετατροπή του Tab σε Enter το είχα για όλη την Form μάλλον θα πρέπει να είναι custom και τα υπόποιπα control της φόρμας.
    Το προβλημά μου είναι πώς θα εφαρμόσω το Override πχ σε ένα ToolStripTextΒox το ποίο περιέχετε μέσα σε ένα ToolStrip δηλ πως θα φτιάξω
    ένα Custom ToolStripTextBox Embarrassed

    Σας ευχαριστώ



    George Matzouranis
  •  25-03-2007, 20:57 27049 σε απάντηση της 27015

    Απ: Beep ενοχλητική υπόθεση

    Δεν το έχω δοκιμάσει αλλά η φιλοσοφία είναι ίδια. Θα φτιάξεις το δικό σου control που θα κληρονομεί από την κλάση ToolStripTextBox και θα κάνει overrides την OnKeyPress. Κατόπιν, find and replace όπως και με τα textbox.

    Μια μικρή συμβουλή: Γενικά, μην πέφτεις με τα μούτρα Smile στον κώδικα! Κάνε δύο βήματα πίσω και σκέψου πως θα δομήσεις καλύτερα το πρόγραμμά σου (πχ εφόσον ο χειρισμός του TAB είναι ευθύνη του control - όπως και το να μην κάνει beep - και όχι της φόρμας, βάλε μέσα στο custom control και αυτόν τον κώδικα. Επίσης, δες πως μια τεχνική που εφαρμόζεις για ένα control μπορείς να την εφαρμόσεις και για κάποιο άλλο. Έτσι, θα είσαι σε θέση να καταλαβαίνεις όχι μόνο τη λύση αλλά και τη φιλοσοφία της λύσης και την επόμενη που φορά που θα αντιμετωπίσεις παρόμοι πρόβλημα θα το λύσεις εύκολα.


    Vir prudens non contra ventum mingit
  •  26-03-2007, 00:28 27051 σε απάντηση της 27049

    Απ: Beep ενοχλητική υπόθεση

    Σε ευχαριστώ πολύ για τις συμβουλές σου.
    Απλά θέλωντας να  εφαρμόσω την τακτική overrides την OnKeyPress πλέον σε κάθε control που θα χρειαστεί να λειτουργεί το enter αντί γιά tab κόλησα στο ότι φτιάχνοντας ένα δικό μου ToolStripTextBox που θα κληρονομεί από την κλάση ToolStripTextBox πως θά το ενσωματόσω σε ένα ToolStrip.
    Γιατί το ToolStripTextBox ειναι item μέσα σε (Collection) εκεί θέλω λίγο βοήθεια.
    πχ το custom TextBox εμφανίζετε κανονικά στο ToolBox και μπορεί να το ρίξης μεσα στην φόρμα αλλά το ToolStripTextBox δεν στέκετε μόνο του αλλά περιέχετε μέσα σε ένα ToolStrip

    ΥΓ
    Εσείς χρησιμοποιήτε Enter ή Tab για μετακίνηση μέσα στη φόρμα?


    George Matzouranis
  •  26-03-2007, 00:59 27053 σε απάντηση της 27051

    Απ: Beep ενοχλητική υπόθεση

    Δεν παίζει ρόλο που είναι item μέσα σε collection. Έτσι κι αλλιώς και το απλό textbox ανήκει στο collection από controls της φόρμας. Η τεχνική είναι ίδια: Κατασκευάζεις το ToolStrip τοποθετώντας κανονικά το τυπικό ToolStripTextBox. Κατόπιν, με find and replace αλλάζεις τα System.Windows.Forms.ToolStriptextBox με το όνομα που έχεις δώσει στο δικό σου control (αυτά βρίσκονται μέσα στο formname.Designer.vb).

    Όσο για το TAB vs ENTER, ρίξε μια ματιά εδώ: http://www.dotnetzone.gr/cs/forums/thread/6837.aspx Εν ολίγοις, κάτι τέτοιο θα έκαα μόνο αν είχε ζητηθεί από τον πελάτη...


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems