Skype:TextControlSupport
Orders:877-462-4772
TX Text Control - word processing components.
« »

Read only text frames in TX Text Control .NET

Blogged by Björn Meyer on March 22, 2007 and tagged with Samples, .NET.

Text frames are a very smart way to position text at a specific position in the document. They are commonly used for a recipient address details area on a letter or any other information that must be at a fixed position in a document.

TX Text Control offers properties to avoid the scaling and the movement of the frame:

Moveable

Sizeable

Sometimes, applications require that such text frames are not editable by the user. In this case, we can use the TextFrameActivated event to set a flag that indicates that a text frame is currently active.

void TX_TextFrameActivated(object sender, TXTextControl.TextFrameEventArgs e)
{
m_trapKeystrokes = true;
}

On the KeyPress event, we can trap the keystrokes, if the mentioned flag has been set to true.

void m_tx_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (m_trapKeystrokes)
e.Handled = true;
}

The TextFrameDeactivated event is used to reset the global flag:

void m_tx_TextFrameDeactivated(object sender, TXTextControl.TextFrameEventArgs e)
{
m_trapKeystrokes = false;
}

The following class is a sample how to inherit from the TextFrame class to create such protected text frames:

class ProtectedTextFrame : TXTextControl.TextFrame
{
private bool m_protected;
private TXTextControl.TextControl m_tx;
private bool m_trapKeystrokes = false;

public ProtectedTextFrame(Size Size, bool Protected, TXTextControl.TextControl TX) : base(Size)
{
m_protected = Protected;
m_tx = TX;

if (m_protected)
{
m_tx.TextFrameActivated += new TXTextControl.TextFrameEventHandler(TX_TextFrameActivated);
m_tx.TextFrameDeactivated += new TXTextControl.TextFrameEventHandler(m_tx_TextFrameDeactivated);
m_tx.KeyPress += new System.Windows.Forms.KeyPressEventHandler(m_tx_KeyPress);
}
}

void m_tx_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (m_trapKeystrokes)
e.Handled = true;
}

void m_tx_TextFrameDeactivated(object sender, TXTextControl.TextFrameEventArgs e)
{
m_trapKeystrokes = false;
}

void TX_TextFrameActivated(object sender, TXTextControl.TextFrameEventArgs e)
{
m_trapKeystrokes = true;
}

public bool Protected
{
get { return m_protected; }
set { m_protected = value; }
}
}

This class can be instantiated like this:

ProtectedTextFrame newFrame = new ProtectedTextFrame(new Size(1000, 1000), true, textControl1);
newFrame.Protected = true;
textControl1.TextFrames.Add(newFrame, -1);

Feel free to contact me, if you want to discuss this approach or, if you have any questions.

« Prev:TX Text Control .NET 64-bit in development
» Next:Enable visual styles in Visual Studio projects

top

Top 10 Bestselling Product Award 2007Top 25 Publisher Product Award 2007Top 10 Bestselling Product Award 2007 in JapanTop 25 Bestselling Product Award 2006Top 25 Bestselling Publisher Award 2006Reader's Choice Award, dot.net magazin, 3rd place