Solved

c# textbox tab location

Posted on 2011-09-02
6
963 Views
Last Modified: 2013-12-17
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
Comment
Question by:sidwelle
  • 3
  • 2
6 Comments
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36475756
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
 

Author Comment

by:sidwelle
ID: 36475802
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
 
LVL 22

Expert Comment

by:pivar
ID: 36475815
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
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:sidwelle
ID: 36475897
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
 
LVL 22

Accepted Solution

by:
pivar earned 500 total points
ID: 36476042

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
 

Author Closing Comment

by:sidwelle
ID: 36476181
Works, very nice

Thanks
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

822 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question