私は、現在開いているウィンドウの上に情報をオーバーレイする支援技術アプリケーション(C#で)を開発しています。クリック可能な要素を検出し、ラベルを付けます。.NET/C#の右クリックメニューの上に描画する方法は?
これを行うには、私は現在、TopMostを "true"に設定し、その上にラベルを描画するボーダレスで透明なウィンドウを作成しています。つまり、現在のアプリケーションの前に常にウィンドウが表示され、ラベルを描画できます。
問題は、このウィンドウでは右クリックメニューは表示されません。他のウィンドウのみです。ユーザーが右クリックすると、コンテキストメニューがオーバーレイの上に描画されます。
右クリックメニューの要素にラベルを付けることができる必要がありますが、現在の実装では要素の上に描画することはできません。誰かが解決策を知っていますか?
編集:これは、オーバーレイを描画するための関連コードです。フォームデザイナーでフォームのオプションを設定しました。コードの明示的な設定ではありません。どのくらい役立つかわかりません。私は、図面に関連していないコード、またはフォーム自体を削除しました:
public partial class OverlayForm : Form
{
public OverlayForm()
{
}
protected override void OnPaint(PaintEventArgs eventArgs)
{
base.OnPaint(eventArgs);
Graphics graphics = eventArgs.Graphics;
Brush brush = new SolidBrush(this.labelColor);
foreach (ClickableElement element in this.elements)
{
Region currentRegion = element.region;
graphics.FillRegion(brush, currentRegion);
}
}
}
オーバレイのコードを表示できますか? – Jacobr365
@ Jacobr365 - 確かに、追加されました。 :) – JackCC
私はそれが可能だとは思わない。コンテキストメニューは、あなたのフォームよりも "一番上"に描画されます。これは、OSによって焦点が合わせられ、より高いzオーダーが得られます。 – DonBoitnott