# C1.Win.TouchToolKit.C1TouchEventProvider.PointerCanceled

## Content

<div class="doc-site-dotnet-api-container">




<h1 id="C1_Win_TouchToolKit_C1TouchEventProvider_PointerCanceled" data-uid="C1.Win.TouchToolKit.C1TouchEventProvider.PointerCanceled" class="text-break">PointerCanceled Event
</h1>
<div class="markdown level0 summary"><p>Occurs when a pointer that made contact abnormally loses contact.</p>
</div>
<div class="markdown level0 conceptual"></div>
<h6><strong>Namespace</strong>: <a class="xref" href="C1.Win.TouchToolKit.html">C1.Win.TouchToolKit</a></h6>
<h6><strong>Assembly</strong>: C1.Win.TouchToolKit.10.dll</h6>
<h5 id="C1_Win_TouchToolKit_C1TouchEventProvider_PointerCanceled_syntax">Syntax</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public event EventHandler&lt;PointerEventArgs&gt; PointerCanceled</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Event PointerCanceled As EventHandler(Of PointerEventArgs)</code></pre>
</div>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.eventhandler-1">EventHandler</a>&lt;<a class="xref" href="C1.Win.TouchToolKit.PointerEventArgs.html">PointerEventArgs</a>&gt;</td>
      <td>Occurs when a pointer that made contact abnormally loses contact.</td>
    </tr>
  </tbody>
</table>
<h5 id="C1_Win_TouchToolKit_C1TouchEventProvider_PointerCanceled_remarks"><strong>Remarks</strong></h5>
<div class="markdown level0 remarks"><p>
<b>Note</b>  <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerCanceled.html">PointerCanceled</a> might fire instead of <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerReleased.html">PointerReleased</a>. 
Don't rely on <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerPressed.html">PointerPressed</a> and <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerReleased.html">PointerReleased</a> events always occurring in pairs.
To function properly, your app must listen for and handle all events that represent likely conclusions to 
the Press action, and that includes <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerCanceled.html">PointerCanceled</a>. Some of the reasons why you might get a <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerCanceled.html">PointerCanceled</a> 
occurrence are:
</p>
<ul><li>
User actions that change the relationship of the display area, such as changing resolution or monitor settings
</li><li>
Input interactions such as a stylus touching the same surface as a previous touch action
</li></ul>
<p>
This event is a routed event. If you do not want parent control receive this event, set <a class="xref" href="C1.Win.TouchToolKit.TouchRoutedEventArgs.Handled.html#C1_Win_TouchToolKit_TouchRoutedEventArgs_Handled">PointerEventArgs.Handled</a>
</p>
</div>
<h5 id="C1_Win_TouchToolKit_C1TouchEventProvider_PointerCanceled_examples"><strong>Examples</strong></h5>
<p>
  The following code example shows how to use this event. 
</p>
<p>
  This code example is part of a larger example provided for the <a class="xref" href="C1.Win.TouchToolKit.C1TouchEventProvider.PointerPressed.html">PointerPressed</a> event.
</p>
<pre><code class="lang-csharp">public class GcTouchEventProviderPointerDemo : Form
{
	private Panel _bluePanel;
	private GcTouchEventProvider _gcTouchEventProvider = new GcTouchEventProvider();

	public GcTouchEventProviderPointerDemo()
	{
		InitializeComponent();

		_gcTouchEventProvider.SetEnableTouchEvents(_bluePanel, true);

		_gcTouchEventProvider.PointerCanceled += _gcTouchEventProvider_PointerCanceled;
	}

	private void _gcTouchEventProvider_PointerCanceled(object sender, PointerEventArgs e)
	{
		string log = "Target: " + e.TargetControl.Name + " Event: PointerCanceled" + "  X: " + e.Position.X.ToString() + " Y: " + e.Position.Y.ToString();
		_messageListBox.Items.Add(log);
	}

	private void InitializeComponent()
	{
		_bluePanel = new Panel();
		_bluePanel.Name = "Blue";
		_bluePanel.BackColor = Color.Blue;
		_bluePanel.Size = new Size(200, 200);
		_bluePanel.Location = new Point(20, 20);
		this.Controls.Add(_bluePanel);
	}
}</code></pre>
<pre><code class="lang-csharp">Public Class GcTouchEventProviderPointerDemo
	Inherits Form
	Private _bluePanel As Panel
	Private _gcTouchEventProvider As New GcTouchEventProvider()

	Public Sub New()
		InitializeComponent()

		_gcTouchEventProvider.SetEnableTouchEvents(_bluePanel, True)

		AddHandler _gcTouchEventProvider.PointerCanceled, AddressOf _gcTouchEventProvider_PointerCanceled
	End Sub

	Private Sub _gcTouchEventProvider_PointerCanceled(sender As Object, e As PointerEventArgs)
		Dim log As String = "Target: " &amp; Convert.ToString(e.TargetControl.Name) &amp; " Event: PointerCanceled" &amp; "  X: " &amp; e.Position.X.ToString() &amp; " Y: " &amp; e.Position.Y.ToString()
		_messageListBox.Items.Add(log)
	End Sub

	Private Sub InitializeComponent()
		_bluePanel = New Panel()
		_bluePanel.Name = "Blue"
		_bluePanel.BackColor = Color.Blue
		_bluePanel.Size = New Size(200, 200)
		_bluePanel.Location = New Point(20, 20)
		Me.Controls.Add(_bluePanel)
	End Sub
End Class</code></pre>

</div>
