最も簡単な方法(これは実際のメニューではありませんので)ボーダレスフォームを作成し、それに影を追加するには、次のようになります。位置について
public class ShadowForm : Form
{
// Define the CS_DROPSHADOW constant
private const int CS_DROPSHADOW = 0x00020000;
// Override the CreateParams property
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_DROPSHADOW;
return cp;
}
}
}
は、それまであまりありません。 Cursor.Position
をチェックするか、MouseUp
イベントハンドラの引数を使用して座標を設定してください。
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
}
protected override OnMouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var menu = new CustomMenu();
menu.Location = PointToScreen(e.Location);
menu.Show(this);
}
}
}
と "メニュー" フォームの:
完全なコードは次のようになります
public partial class CustomMenu : Form
{
public CustomMenu()
{
InitializeComponent();
this.StartPosition = FormStartPosition.Manual;
}
private const int CS_DROPSHADOW = 0x00020000;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_DROPSHADOW;
return cp;
}
}
protected override void OnLostFocus(EventArgs e)
{
this.Close();
base.OnLostFocus(e);
}
}
私はあなたがここにWinformsの話をしているそれを取りますか? –
明らかに、ツールボックスのContextMenuStripコントロールが見付かりませんでした。 – adelphus
いいえ、私はそれを見逃していませんでした。はい、これはC#のwinformsです。 – amnesyc