C# 我的代码中缺少什么。。如何实现同样的目标?

C# 我的代码中缺少什么。。如何实现同样的目标?,c#,.net,windows-mobile,compact-framework,C#,.net,Windows Mobile,Compact Framework,代码: 您好,上面的代码在windowsmobile中首次启动表单时运行良好,它隐藏了windowsmobile中表单的sip按钮, 但是如果我点击菜单栏,sip按钮会再次出现。。我不知道如何完全消除sip按钮。。请帮我解决这个问题 我声明我根本不希望windowsmobile中的表单使用sip按钮。。我正在使用.NETCF 谢谢当你说你点击“菜单栏”时,你说的是你写的自定义栏还是所有程序(除了全屏程序)顶部的标准栏(带有开始菜单、时钟等) 如果你说的是普通的开始菜单栏,当你点击它时,你的程序不

代码:

您好,上面的代码在windowsmobile中首次启动表单时运行良好,它隐藏了windowsmobile中表单的sip按钮, 但是如果我点击菜单栏,sip按钮会再次出现。。我不知道如何完全消除sip按钮。。请帮我解决这个问题

我声明我根本不希望windowsmobile中的表单使用sip按钮。。我正在使用.NETCF


谢谢

当你说你点击“菜单栏”时,你说的是你写的自定义栏还是所有程序(除了全屏程序)顶部的标准栏(带有开始菜单、时钟等)

如果你说的是普通的开始菜单栏,当你点击它时,你的程序不再是活动的,这就是为什么SIP按钮被重新绘制的原因。如果是这种情况,您可能可以使用
激活的
事件再次尝试隐藏SIP按钮

额外注意:当用户再次在表单中单击时,此代码只会重新隐藏SIP按钮,直到发生这种情况,它才会运行

以下是我描述的一个想法:

    [DllImport("AYGShell.dll")]
    static extern Int32 SHFullScreen(IntPtr hwndRequester, UInt32 dwState);

    public const UInt32 SHFS_SHOWSIPBUTTON = 0x0004;
    public const UInt32 SHFS_HIDESIPBUTTON = 0x0008;

    public Form1()
    {
        InitializeComponent();
    }

    private void OnPaint(object sender, PaintEventArgs e)
    {
        HideSipButton();
    }

    private void HideSipButton()
    {
        UInt32 dwState = SHFS_HIDESIPBUTTON;//: SHFS_SHOWSIPBUTTON;
        SHFullScreen(this.Handle, dwState);
    }

重写Form.OnActivated方法并调用HideSipButton。 E.x.:


你看到这个了吗?还有这个问题(不确定是否对你有帮助):谢谢,我会试试,但我这里没有使用任何面板。这是默认面板。可能有一些简单的技巧可以隐藏。。所以我正在搜索。当您可以直接附加到事件时,为什么要覆盖它?请参见“备注”部分。“OnActivated方法还允许派生类在不附加委托的情况下处理事件。重写此方法是在派生类中处理事件的首选技术。”-有意思,我不知道。嘿,它很管用。。只是在一开始。。若我点击第一个SIP按钮,那个么若我点击SIP按钮,它将调用绘画事件,然后它将再次被隐藏。。当我点击菜单栏时,表单激活和绘制事件都不会出现。
public Form1()
{
  InitializeComponent();
  this.Activated += new EventHandler(Form1_Activated);
}

private void Form1_Activated(object sender, EventArgs e)
{
  HideSipButton();
}

private void OnPaint(object sender, PaintEventArgs e)
{
  HideSipButton();
}
protected override void OnActivated(EventArgs e)
{
  HideSipButton();
  return base.Equals(e);
}