Sathish kumar
Sathish kumar

Reputation: 19

Align the text in center for multiple richtextbox in c#

I need to align the text center for multiple richtextbox.

I found the solution to align the single richtextbox.

EX:

richtextbox1.SelectAll();

richtectbox1.SelectionAlignment = HorizantalAlignment.Center;

I dont want to enter this for every textboxes. How to do this for multiple richtextbox using loop?

Upvotes: 0

Views: 2020

Answers (4)

StuartLC
StuartLC

Reputation: 107247

In addition to CodingYoshi's answer, if the Rich Text Boxes don't have a single common parent (i.e. the TextBoxes are dispersed on GroupBoxes, Tabs, etc), then you'll need to recurse from the topmost common parent (possibly the form itself) in order to find the RichTextBoxes, using a technique such as this one here:

    public IEnumerable<Control> GetAll(Control control, Type type)
    {
        var controls = control.Controls.Cast<Control>();

        return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                  .Concat(controls)
                                  .Where(c => c.GetType() == type);
    }

You'll then be able to apply your alignment to all subordinate controls at any level from a given root coontrol (this is the root Form control in this example)

foreach (RichTextBox textBox in GetAll(this, typeof (RichTextBox)))
{
    textBox.SelectAll();
    textBox.SelectionAlignment = HorizontalAlignment.Center;
}

Upvotes: 1

Vishal Kottarathil
Vishal Kottarathil

Reputation: 346

First you need to get all the child controls of the form into a list, and by changing the required property of each item in the list your objective can be met.

You can get all child controls by using a function like this:

    public static IEnumerable<TControl> GetChildControls<TControl>(this Control control) where TControl : Control
    {
        var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>();
        return children.SelectMany(c => GetChildControls<TControl>(c)).Concat(children);
    }

You can get all the RichText boxes like this

var richTextBoxes = this.GetChildControls<RichTextBox>();
foreach (RichTextBox rtb in richTextBoxes)
{
   rtb.SelectionAlignment = HorizantalAlignment.Center;
}

Consider this as an idea, copy paste this code may have syntax errors.

Upvotes: 0

ronfl
ronfl

Reputation: 15

You need to create a list of RichTextBoxes, and then:

foreach(richtextbox in list)
{
 t.SelectAll();
 t.SelectionAlignment = HorizantalAlignment.Center;
}

You can also use [this] (How to get ALL child controls of a Windows Forms form of a specific type (Button/Textbox)?) post, to gather all your richtextboxes:

Upvotes: 0

CodingYoshi
CodingYoshi

Reputation: 27009

You can look for all the controls who are of type RichTextBox and do whatever you need to do like this:

foreach (var thisControl in this.Controls.OfType<RichTextBox>())
{
    thisControl.SelectAll();
    thisControl.SelectionAlignment = HorizontalAlignment.Center;
}

Upvotes: 1

Related Questions