• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 981
  • Last Modified:

c# textbox tab location

How can I set the Tab locations within a textbox ? I found one example that uses the API to send a msg, but I thought .Net would be cleaner than that.

Thanks
0
sidwelle
Asked:
sidwelle
  • 3
  • 2
1 Solution
 
käµfm³d 👽Commented:
What do you mean by "tab locations"? Are you referring to when hitting the Tab key you go to the next TextBox (or other control)? If so, you would use the designer for this:

Screenshot
The numbers indicate the tab order of the controls. Nested controls get a decimal value. When you have the numbers showing, you can simply click the controls in the order you want the next control to be entered.

My guess is that you don't mean this, though  : \
0
 
sidwelleAuthor Commented:
No,  When I  populate a textbox with a string and it contains a 'TAB' or '\t', I want to set the tab location on the TextBox control. The tab location being the number of characters from the left border.



0
 
pivarCommented:
Hi,

I think you need to use API message EM_SETTABSTOPS for TextBox.

But if it's ok to use RichTextBox you coud use RichTextBox.SelectionTabs.

/peter
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
sidwelleAuthor Commented:
I was trying to use the example here: http://stackoverflow.com/questions/2000772/using-c-how-do-i-set-tab-positions-in-a-multiline-textbox

But I was having a lot of problems with the 'IntPtr' statement and I don't know alot about it.

0
 
pivarCommented:

Try the following
.
.
.
using System.Runtime.InteropServices;

namespace Test {

  public partial class Form1 : Form {
        private const int EM_SETTABSTOPS = 0x00CB;
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr h, int msg, int wParam, int[] lParam);
        
        public Form1()
        {
            InitializeComponent();

            SetTabStops(textBox1, new int[] { 10, 50, 100 });
          }

        private void SetTabStops(TextBox tb, int[] tabs)
        {
              SendMessage(tb.Handle, EM_SETTABSTOPS, tabs.Length, tabs);
        }
}

/peter
0
 
sidwelleAuthor Commented:
Works, very nice

Thanks
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now