在VB里很容易实现如下功能,但在C#里怎样实现呢?请大家指点一下,谢谢!!(1)窗体总在前面
(2)窗体透明
(3)在非标题栏中拖动窗体

解决方案 »

  1.   

    (1);    Me.TopMost = True
    (2):    Me.Opacity = 0.5第三个你要自己写onmousedown事件配合onmousemove
      

  2.   

    参看
    http://blog.csdn.net/knight94/archive/2006/05/11/724967.aspx
      

  3.   

    (3)在非标题栏中拖动窗体
    处理WM_NCHITTEST消息效果比较好。
      

  4.   

    第一个问题:哈哈,原来.net把这种功能变成了属性(已解决)第二个问题:直接改Opacity的值是可以使窗体透明,不过连窗体上的控件也透明了,不是我想要的。后来利用修改TransparencKey的值达到窗体透明,但控件不透明(已解决)第三个问题:在1楼与5楼的朋友指点下,找到以下两段代码:
    (1)
    private const int WM_NCHITTEST = 0x84;
    private const int HTCLIENT = 0x1;
    private const int HTCAPTION = 0x2;protected override void WndProc(ref Message m)
      {
       switch(m.Msg)
       {
        case WM_NCHITTEST:
         base.WndProc(ref m);
         if ((int)m.Result == HTCLIENT)
          m.Result = (IntPtr)HTCAPTION;
         return;
         break;
       }
       base.WndProc(ref m);
      }
    以上代码是可以实现拖动窗体,不过如果想拖动一个label来实现拖动窗体的话,要用代码2
    (2)
    using System.Runtime.InteropServices;
    public partial class KyanForm : Form 

    [DllImport("User32.dll", EntryPoint = "SendMessage")] 
    private static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam); 
    [DllImport("User32.dll", EntryPoint = "ReleaseCapture")] 
    private static extern int ReleaseCapture(); public KyanForm() 

    InitializeComponent(); 
    } private void KyanForm_MouseDown(object sender, MouseEventArgs e) 

    if (e.Button == MouseButtons.Left) 

    ReleaseCapture(); 
    SendMessage(this.Handle.ToInt32(), 0x0112, 0xF012, 0); 


    用代码2就能解决我想要的问题。
      

  5.   

     一下,C#哪有me哦 ,看来是VB用惯了,呵呵
      

  6.   

    DotNET的资源占用是个问题,因为要加载运行库,所以至少也要10几M内存。
    如果非常恶劣的环境下考虑效率问题,C#不是很好的选择。