C 實現無邊框拖到的兩種方式

2021-09-02 17:50:33 字數 1535 閱讀 7066

a、一種是使用windows api:

先建立乙個專案演示一下

選擇窗體的屬性formborderstyle設定為 none

開啟窗體**

//需新增using system.runtime.interopservices;

選擇窗體的滑鼠按下事件

並加入下列**:

[dllimport("user32.dll")]  

public static extern bool releasecapture();

[dllimport("user32.dll")]

public static extern bool sendmessage(intptr hwnd, int wmsg, int wparam, int lparam);

//......

private void form1_mousedown(object sender, mouseeventargs e)

}

然後生成一下專案即可實現窗體移動;

這個方法,使用的話拖動效果和正常視窗拖動效果差不多,但是一句releasecapture()就使視窗的某些mouse事件無法響應。比如mouseclick。有時候是不能忍的。

b、第二種方法是在窗體幾個mouse事件中共同實現;

如下圖:

具體**實現如下:

#region c#無邊框移動窗體第二種方式

bool beginmove = false;//初始化

int currentxposition;

int currentyposition;

#endregion

private void form1_mousedown(object sender, mouseeventargs e)

#endregion

}private void form1_mousemove(object sender, mouseeventargs e)

#endregion

}private void form1_mouseup(object sender, mouseeventargs e)

#endregion

}

這種方法在c#中比較正規(不用呼叫api了)。

缺點是,還得多加一些方法優化視窗移動效果。

兩種方式實現checkBox readonly功能

今天在做開發的時候遇到了這樣乙個問題 有乙個checkbox選項是不能被改變的。但是checkbox又是沒有readonly屬性的,這個時候我就想到了另外乙個屬性disabled,但是disabled的物件是不能提交到後台的,所以這個又被排除掉了。想了想,只能新增事件來搞定了。於是在checkbox...

TabHost兩種實現方式

第一種 繼承tabactivity,從tabactivity中用gettabhost 方法獲取tabhost。只要定義具體tab內容布局就行了.package com.example.testtabhost import android.os.bundle import android.view.l...

兩種方式實現checkBox readonly功能

今天在做開發的時候遇到了這樣乙個問題 有乙個checkbox選項是不能被改變的。但是checkbox又是沒有readonly屬性的,這個時候我就想到了另外乙個屬性disabled,但是disabled的物件是不能提交到後台的,所以這個又被排除掉了。想了想,只能新增事件來搞定了。於是在checkbox...