Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. display text in textbox

display text in textbox

Scheduled Pinned Locked Moved C#
databasequestioncsharp
15 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • OriginalGriffO OriginalGriff

    If I understand you correctly, you have a form with a textbox, and a separate class which does some work and is to display text in the textbox? If yes, then either: 1) the class needs to be given the instance of the form. or 2) the class needs to signal to the form that data is ready for display. The first way is pretty trivial, the second is better practice. Assuming:

    myForm formMine = new myForm();
    myClass classMine = new myClass();

    In the first case, create a field in myClass:

    public myForm formDisplayResult;

    and assign it after the form and class creation:

    myForm formMine = new myForm();
    myClass classMine = new myClass();
    classMine.formDisplayResult = formMine;

    then access the textbox from your class:

    formDisplayResult.tbResultsGoHere.Text = "Hello";

    In the second case, it is a little more complex: In myClass:

     public partial class myClass
        {
        // Signal file change happened
        public delegate void ChangeHandler(object sender, EventArgs e);
        public event ChangeHandler Changed;
    
        protected virtual void OnChanged(EventArgs e)
           {
           ChangeHandler ch = Changed;
           if (ch != null)
              {
              ch(this, e);
              }
           }
           
        private void DoSomethingToChangeData()
           {
           OnChanged(null); 
           }
        }
    

    ----- The asign to ch is in case the handler changes between null check ----- and exec. ----- (unlikely, but possible) ----- The null check is to ensure there is a handler. If not, better to ----- ignore it gracefully, than to rely on the thrown exception ----- (NullReferenceException) In myForm:

        myClass classMine = new myClass();
        public myForm()
            {
            classMine.Change += new myClass.ChangeHandler(Changed);
            }
    
        //
        // Fired when the results are available
        //
        private void Changed(object sender, EventArgs e)
            {
            tbResultsGoHere.Text = classMine.strResults;
            }
    

    It is easy really - you just have to get your head around it!

    No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

    A Offline
    A Offline
    Abdul Rahman Hamidy
    wrote on last edited by
    #6

    thx alot, I really appreciate the second one, the first one might be bad habbit :) but one thing, does the class inherits from some thing, or its simply public class className { //cnt and others {

    Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

    H OriginalGriffO 2 Replies Last reply
    0
    • A Abdul Rahman Hamidy

      thx alot, I really appreciate the second one, the first one might be bad habbit :) but one thing, does the class inherits from some thing, or its simply public class className { //cnt and others {

      Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

      H Offline
      H Offline
      Henry Minute
      wrote on last edited by
      #7

      Either. It makes no real difference for your example.

      Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”

      1 Reply Last reply
      0
      • A Abdul Rahman Hamidy

        thx alot, I really appreciate the second one, the first one might be bad habbit :) but one thing, does the class inherits from some thing, or its simply public class className { //cnt and others {

        Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

        OriginalGriffO Offline
        OriginalGriffO Offline
        OriginalGriff
        wrote on last edited by
        #8

        As Henry said, it doesn't matter - any class (derived or not) can generate events. Sorry for the late reply, I was busy making a bulk supply of meatballs...

        No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

        "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
        "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

        1 Reply Last reply
        0
        • OriginalGriffO OriginalGriff

          If I understand you correctly, you have a form with a textbox, and a separate class which does some work and is to display text in the textbox? If yes, then either: 1) the class needs to be given the instance of the form. or 2) the class needs to signal to the form that data is ready for display. The first way is pretty trivial, the second is better practice. Assuming:

          myForm formMine = new myForm();
          myClass classMine = new myClass();

          In the first case, create a field in myClass:

          public myForm formDisplayResult;

          and assign it after the form and class creation:

          myForm formMine = new myForm();
          myClass classMine = new myClass();
          classMine.formDisplayResult = formMine;

          then access the textbox from your class:

          formDisplayResult.tbResultsGoHere.Text = "Hello";

          In the second case, it is a little more complex: In myClass:

           public partial class myClass
              {
              // Signal file change happened
              public delegate void ChangeHandler(object sender, EventArgs e);
              public event ChangeHandler Changed;
          
              protected virtual void OnChanged(EventArgs e)
                 {
                 ChangeHandler ch = Changed;
                 if (ch != null)
                    {
                    ch(this, e);
                    }
                 }
                 
              private void DoSomethingToChangeData()
                 {
                 OnChanged(null); 
                 }
              }
          

          ----- The asign to ch is in case the handler changes between null check ----- and exec. ----- (unlikely, but possible) ----- The null check is to ensure there is a handler. If not, better to ----- ignore it gracefully, than to rely on the thrown exception ----- (NullReferenceException) In myForm:

              myClass classMine = new myClass();
              public myForm()
                  {
                  classMine.Change += new myClass.ChangeHandler(Changed);
                  }
          
              //
              // Fired when the results are available
              //
              private void Changed(object sender, EventArgs e)
                  {
                  tbResultsGoHere.Text = classMine.strResults;
                  }
          

          It is easy really - you just have to get your head around it!

          No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

          D Offline
          D Offline
          DaveyM69
          wrote on last edited by
          #9

          Good answer! For future reference, there is no need to create a delegate if using 2.0 or above. public event ChangeHandler Changed; can be written as public event EventHandler Changed; If custom event args are needed, there is a generic event handler public event EventHandler<ChangedEventArgs> Changed; Yay, no more delegate writing when using events :-D

          Dave
          BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
          Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
          Why are you using VB6? Do you hate yourself? (Christian Graus)

          OriginalGriffO 1 Reply Last reply
          0
          • OriginalGriffO OriginalGriff

            If I understand you correctly, you have a form with a textbox, and a separate class which does some work and is to display text in the textbox? If yes, then either: 1) the class needs to be given the instance of the form. or 2) the class needs to signal to the form that data is ready for display. The first way is pretty trivial, the second is better practice. Assuming:

            myForm formMine = new myForm();
            myClass classMine = new myClass();

            In the first case, create a field in myClass:

            public myForm formDisplayResult;

            and assign it after the form and class creation:

            myForm formMine = new myForm();
            myClass classMine = new myClass();
            classMine.formDisplayResult = formMine;

            then access the textbox from your class:

            formDisplayResult.tbResultsGoHere.Text = "Hello";

            In the second case, it is a little more complex: In myClass:

             public partial class myClass
                {
                // Signal file change happened
                public delegate void ChangeHandler(object sender, EventArgs e);
                public event ChangeHandler Changed;
            
                protected virtual void OnChanged(EventArgs e)
                   {
                   ChangeHandler ch = Changed;
                   if (ch != null)
                      {
                      ch(this, e);
                      }
                   }
                   
                private void DoSomethingToChangeData()
                   {
                   OnChanged(null); 
                   }
                }
            

            ----- The asign to ch is in case the handler changes between null check ----- and exec. ----- (unlikely, but possible) ----- The null check is to ensure there is a handler. If not, better to ----- ignore it gracefully, than to rely on the thrown exception ----- (NullReferenceException) In myForm:

                myClass classMine = new myClass();
                public myForm()
                    {
                    classMine.Change += new myClass.ChangeHandler(Changed);
                    }
            
                //
                // Fired when the results are available
                //
                private void Changed(object sender, EventArgs e)
                    {
                    tbResultsGoHere.Text = classMine.strResults;
                    }
            

            It is easy really - you just have to get your head around it!

            No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

            A Offline
            A Offline
            Abdul Rahman Hamidy
            wrote on last edited by
            #10

            Well, i think i need more help for (int i=0; iAbdul Rahaman Hamidy Database Developer Kabul, Afghanistan

            OriginalGriffO 1 Reply Last reply
            0
            • A Abdul Rahman Hamidy

              Well, i think i need more help for (int i=0; iAbdul Rahaman Hamidy Database Developer Kabul, Afghanistan

              OriginalGriffO Offline
              OriginalGriffO Offline
              OriginalGriff
              wrote on last edited by
              #11

              I think you mean that your class generates a sequence of results, rather than a single result? If so, then I would output them to a list and signal to the higher level that there were available. Specifically, I would set up a queue in your class:

              public Queue<string> qsOutputResults = new Queue<string>(100);

              (Always create a queue with a minimum size or it gets extended the first time you use it) Then when your results are available:

              qsOutputResults.Enqueue(i.ToString());
              OnChanged(null);

              This adds the results to the queue and signals the results are ready. In your form:

              private void Changed(object sender, EventArgs e)
              {
              while (classMine.qsOutputResults.Count > 0)
              {
              tbResultsGoHere.AppendText(classMine.qsOutputResults.Dequeue());
              }
              }

              Using the queue means they come off in the same order they went on. If your form is too busy, they will just wait on the queue until you are ready. You can replace the string with whatever is sensible for your results (of course). You probably don't want to AppendText (it depends on your app) it was just for example.

              No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

              "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
              "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

              A 1 Reply Last reply
              0
              • D DaveyM69

                Good answer! For future reference, there is no need to create a delegate if using 2.0 or above. public event ChangeHandler Changed; can be written as public event EventHandler Changed; If custom event args are needed, there is a generic event handler public event EventHandler<ChangedEventArgs> Changed; Yay, no more delegate writing when using events :-D

                Dave
                BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
                Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
                Why are you using VB6? Do you hate yourself? (Christian Graus)

                OriginalGriffO Offline
                OriginalGriffO Offline
                OriginalGriff
                wrote on last edited by
                #12

                Thanks! I didn't know that, I'll give it a try sometime soon. Would be nice to simplify delegate / handler construction a bit...

                No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                1 Reply Last reply
                0
                • OriginalGriffO OriginalGriff

                  I think you mean that your class generates a sequence of results, rather than a single result? If so, then I would output them to a list and signal to the higher level that there were available. Specifically, I would set up a queue in your class:

                  public Queue<string> qsOutputResults = new Queue<string>(100);

                  (Always create a queue with a minimum size or it gets extended the first time you use it) Then when your results are available:

                  qsOutputResults.Enqueue(i.ToString());
                  OnChanged(null);

                  This adds the results to the queue and signals the results are ready. In your form:

                  private void Changed(object sender, EventArgs e)
                  {
                  while (classMine.qsOutputResults.Count > 0)
                  {
                  tbResultsGoHere.AppendText(classMine.qsOutputResults.Dequeue());
                  }
                  }

                  Using the queue means they come off in the same order they went on. If your form is too busy, they will just wait on the queue until you are ready. You can replace the string with whatever is sensible for your results (of course). You probably don't want to AppendText (it depends on your app) it was just for example.

                  No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                  A Offline
                  A Offline
                  Abdul Rahman Hamidy
                  wrote on last edited by
                  #13

                  thx dude, that is really appreciated. the thing which i got concern with, My messsage will not increase than 1000 lines, in each 1000 lines i will clear the textbox contents, well do i need to use queue for my case, or i should use some other collection for good performance? and if the size of queue increase will it affect the speed and performance of computer?

                  Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

                  OriginalGriffO 1 Reply Last reply
                  0
                  • A Abdul Rahman Hamidy

                    thx dude, that is really appreciated. the thing which i got concern with, My messsage will not increase than 1000 lines, in each 1000 lines i will clear the textbox contents, well do i need to use queue for my case, or i should use some other collection for good performance? and if the size of queue increase will it affect the speed and performance of computer?

                    Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

                    OriginalGriffO Offline
                    OriginalGriffO Offline
                    OriginalGriff
                    wrote on last edited by
                    #14

                    The performance of the queue should be pretty good anyway (except when the size is increased, at which point a new structure has to be created and populated with a copy of the original). Just a case of setting the initial size to a reasonable limit. If you use another collection (a List<T> for example) then you would have to take care of the FIFO ordering which a Queue guarantees. If you are displaying the latest results (as you seem to) then why re-invent the wheel? [edit]Removed word "not" from "should not be pretty good" above[/edit]

                    No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                    "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                    "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                    A 1 Reply Last reply
                    0
                    • OriginalGriffO OriginalGriff

                      The performance of the queue should be pretty good anyway (except when the size is increased, at which point a new structure has to be created and populated with a copy of the original). Just a case of setting the initial size to a reasonable limit. If you use another collection (a List<T> for example) then you would have to take care of the FIFO ordering which a Queue guarantees. If you are displaying the latest results (as you seem to) then why re-invent the wheel? [edit]Removed word "not" from "should not be pretty good" above[/edit]

                      No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced. This message is made of fully recyclable Zeros and Ones

                      A Offline
                      A Offline
                      Abdul Rahman Hamidy
                      wrote on last edited by
                      #15

                      thx alot, you helped me alot, thanks again :)

                      Abdul Rahaman Hamidy Database Developer Kabul, Afghanistan

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups