Announcement

Collapse
No announcement yet.

TextBox Control: Caret/Cursor nach Windows Resize verschwunden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Ich Dödel! (
    Ja, diese wichtige Information habe ich natürlich vergessen zu erwähnen!

    Ja, es ist eine Klassenbibliothek...

    Tausendmal Entschuldigung!

    Comment


    • #17
      Gibt es da trotzdem eine Möglichkeit für ein Refresh?

      Comment


      • #18
        Probiern wir noch weiter die Ursach einzugrenzen.

        Zuerst fass ich aber kurz zusammen:
        1. du hast ein eigene TextBox erstellt die von TextBox erbt und in einer Klassenbibliothek ist
        2. beim Ändern der Größe des Containers (der Form) verschwindet der Cursor in der TextBox, eine Text-Eingabe ist aber weiterhin möglich


        Was ist wenn in der DLL eine "normale" TextBox verwendet wird. Tritt das Problem da auch auf?

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #19
          ... externen Applikation gestartet wird, läuft es nicht in einem normalen Form ...
          Ähm, willst du damit sagen das du deine Textbox per irgend einem Injection Mechanismus in eine fremde laufende Anwendung reingeschossen hast?

          Dann würde ich gerne wissen wie du die Textbox eingehangen hast, sprich welches Handle der fremden Anwendung hast du als Parent/Owner für deine WinForms Textbox benutzt. Das ist aus deinem Codeschnipsel nicht wirklich ersichtlich.

          Comment


          • #20
            Hallo Leute,
            bin wieder zurück mit meinem Problem.

            An gfoidl :
            1. Ja, ich habe eine TextBox, die von der Klasse TextBox erbt (auch schon mit Control und Form getestet)
            2. Ja, der Cursor verschwindet, man kann aber immer noch an diesem Ort schreiben = Fokus noch da. Man kann auch den Cursor woanders positionieren und dorthin schreiben - einfach man sieht den Cursos nicht.
            3. was verstehst Du unter "normaler" TextBox?

            Comment


            • #21
              was verstehst Du unter "normaler" TextBox
              System.Windows.Forms.TextBox

              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #22
                Um deinen Problem eine Ende zu setzen:

                Schreib mal was du willst. Vielleicht gibts es ja eine anderen Ansatz der das gleiche Ergebnis liefert.

                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #23
                  An Ralf Jansen:
                  Ich darf leider nicht sagen, was für eine Anwendung, aber ja, die .dll wird von der Anwendung erkannt und dann verweist man auf diese.

                  Man bindet die C#-TextBox in den Code der Anwendung ein.
                  Kreiert ein Objekt und ruft dann die Init Sequenz der TextBox auf.

                  Hier noch mehr Codeschnippsel (Meine Variablen & Co):
                  Code:
                          [DllImport("User32.DLL")]
                          private static extern uint FindWindow(IntPtr a, IntPtr b);
                          [DllImport("User32.DLL")]
                          private static extern bool GetClientRect(uint Handle, ref TextBox.RECT rc);
                          [DllImport("User32.DLL")]
                          private static extern uint GetFocus();
                          [DllImport("User32.DLL")]
                          private static extern uint SetParent(uint Child, uint Parent);
                          [DllImport("User32.DLL")]
                          private static extern uint SetWindowLong(uint Handle, int Msg, IntPtr Func);
                          private static float AspectRatio;
                          protected static TextBox textbox;
                          private static MyNativeWindow mnw;
                          protected static int SizeModeVal;
                          protected static uint uHandle;
                          private const int WM_ACTIVATE = 6;
                          private const int WM_DESTROY = 2;
                          private const int WM_LBUTTONDBLCLK = 0x203;
                          private const int WM_LBUTTONUP = 0x202;
                          private const int WM_NOTIFY = 0x4e;
                          private const int WM_SETFOCUS = 7;
                          private const int WM_SIZE = 5;
                          private const int WM_VSCROLL = 0x115;
                          private int MaxLength;
                          private static int SaveSettingInt = 1;
                  Hier noch die Teile aus der Init:
                  Code:
                  TextBox.uHandle = TextBox.GetFocus();
                  TextBox.SetParent((uint)((int)TextBox.textbox.Handle), TextBox.uHandle);

                  Comment


                  • #24
                    Entschuldige, aber ich sehe überhaupt keinen Sinn eine TextBox in eine andere Anwendung einzuschleusen. Hat diese keine TextBoxen

                    mfG Gü
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment


                    • #25
                      Genau da liegt der Punkt! - Es gibt dort keine mehrzeiligen Textboxen!

                      Darum soll ich das entwickeln und wie gesagt es klappt sonst alles. Die Daten werden aus der DB gelesen, zusammengesetzt und in die Textbox abgefüllt. Danach kommt jede Zeile der Textbox wieder in die DB.
                      Wenn dieses letzte "kleine" Problem gelöst ist, dann wird das eine grosse Sache, für die Benutzer.

                      Comment


                      • #26
                        Und wie wird die TextBox dort eingebunden. Als COM, ....

                        Die Daten werden aus der DB gelesen, zusammengesetzt und in die Textbox abgefüllt. Danach kommt jede Zeile der Textbox wieder in die DB.
                        ...dann wird das eine grosse Sache, für die Benutzer.
                        Ein DataGridView wäre auch eine alternative große Sache.

                        mfG Gü
                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                        Comment


                        • #27
                          Ja, wird als COM eingebunden

                          Werde nun mal das DatagridView anschauen... Mein Wissen dort ist recht eingerostet...
                          Danke für den Vorschlag.

                          Comment


                          • #28
                            Verwende dann das DGV.

                            An der Mithilfe für die TextBox-Variante bist du scheinbar nicht interessiert, denn deine Infos sind extrem rar. ZB mit welcher Sprache wird die andere Anwendung erstellt,...
                            Das Projekt ist anscheinend so geheim dass nicht mal vernüftige Controls verwendet werden dürfen

                            mfG Gü
                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                            Comment


                            • #29
                              Nicht mich angreifen, wenn das von weiter oben so kommuniziert ist!
                              Würde gerne mehr Infos geben, damit dieses Problem verschwindet! (

                              Comment


                              • #30
                                In der Anwendung gibt es einfach nur ein:
                                create(<def. Variable meines Codes> (z.B. TxtBoxObj))
                                danach rufe ich die Init auf:
                                TxtBoxObj.Init;

                                That's it, der Rest wird im Automation Server geregelt...

                                Comment

                                Working...
                                X