Products Technologies Demo Docs Blog Support Company

Is There a Table at the Current Mouse Position?

Opening a table context menu at the current mouse position requires converting screen coordinates to twips and updating the caret position. This sample handles the right-click MouseUp event, repositions the caret via InputPosition, and calls Tables.GetItem() for detection.

Is There a Table at the Current Mouse Position?

In our sample applications, we show how to open a context menu for table properties when the current input position is inside a table. Sometimes, however, it is necessary to open a context menu when the input position is not inside a table. The following source code illustrates how to achieve this. We can use the InputPosition class to set the caret to the current mouse position. This is especially important, if the right mouse button is used for context menus, as is usually the case. The input position is not automatically set to the mouse position. The return values of the mouse event must be converted to twips to match the required unit of the InputPosition class. The Tables.GetItem() method is used to check whether there is a table at the current input position or not.

private void textControl1_MouseUp(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Right)
  {
    textControl1.InputPosition = new TXTextControl.InputPosition(new Point(Convert.ToInt32(e.X * dpiX), Convert.ToInt32(e.Y * dpiX)));
    if (textControl1.Tables.GetItem() != null)
      MessageBox.Show("Table");
  }
}

float dpiX = 15;
private void Form1_Paint(object sender, PaintEventArgs e)
{
  dpiX = 1440 / e.Graphics.DpiX;
}

Stay in the loop!

Subscribe to the newsletter to receive the latest updates.

Related Posts

Windows FormsWPF.NET

Create a Table of Contents in Windows Forms using C#

This article explains how to create a table of contents in Windows Forms using the ribbon or programmatically. Creating a table of contents is required to organize large documents.


Windows FormsList.NET

Two Ways to Restart Numbered Lists in TX Text Control

In TX Text Control, numbered lists are continued by default and need to be reset when required. There is more than one way if you want to restart numbered lists in a document. In this article, two…


.NETSample

Paste Special: The Easy Way to Implement

TX Text Control version 15.0 introduced a ClipboardFormat parameter on the Paste method, enabling native Paste Special functionality. The GetClipboardFormats method returns all available clipboard…


.NETSampleSections

How to Remove All Section Breaks in a Document?

TX Text Control 15.0 adds per-section page column support alongside existing section breaks. To remove all section breaks programmatically, iterate through SectionCollection using…


.NETPrintingSample

Batch Printing: How to Print Documents in One Print Job

Batch printing multiple documents as a single print job using TX Text Control relies on a .NET PrintDocument with PrintPage and QueryPageSettings events. Each page is rendered individually via the…

Share on this blog post on: