讓你的Winform應用在執行時可自由拖放控制項位置

2021-04-15 15:54:14 字數 2271 閱讀 8285

有這樣乙個場景,有ab兩個客戶總對介面擺放有著不同的喜好,乙個喜歡查詢條件輸入區(被放在乙個groupbox中)在介面的上半部分,輸入區在下半部分(被放在另乙個groupbox中),另乙個使用者則正好相反,所以我們在介面設計確認時今天a在時,我們聽他的要求,改一次,明天a去開會了,b來確認,又讓我們改回來,幾次下來,覺得很痛苦,如果介面有區多的區域,比如說乙個查詢條件輸入區、乙個業務資料錄入區、乙個輸出區,這種情況下,客戶的喜好更是會讓你左改右改,所以我們最後決定提供以groupbox為單位的,執行時可拖拽上下位置的功能,讓不同的客戶根據自己的喜好去拖拽,我們後台自動儲存設定就是了。

場景描述很複雜,但**實現卻很簡練:

乙個全權負責拖放管理的類實現:

using system;

using system.windows.forms;

namespace subindex

/// 得到乙個包含首層父控制項的控制項的物件名,如form1下groupbox1中的textbox1,將返回form1.textbox1

///

///

要獲得物件名的控制項例項

///

public static string getfullname(control sender)

/// 設定指定groupbox控制項的拖放操作,根據candrag和candrop決定拖出/放入的支援

///

///

要設定拖放特性的groupbox物件

///

是否可以拖出

///

是否可以放入

public static void dragdrophook(groupbox sender,bool candrag,bool candrop)

/// 設定指定groupbox控制項的拖放操作,同時支援拖出和放入

///

///

要設定拖放特性的groupbox物件

public static void dragdrophook(groupbox sender)

private static void draghook(groupbox sender)

private static void drophook(groupbox sender)

private static void drag_enter(object sender, system.windows.forms.drageventargs e)

private  static void do_drag(object sender, mouseeventargs e)

else

}catch (exception ee)

}private static void gutposition(groupbox sender)

}private static void setposition(groupbox sender,int position)}}

只要將所有groupbox的dock屬性設為同一方向後,只需要form_load時呼叫只需一句就可實現執行時拖放:

dragdropagent.dragdrophook(this.grpindex);

dragdropagent.dragdrophook(this.grpwrap);//可拖動可放入,如果要設計成只可拖動或只可放入的請修改dragdropagent類的那個實現方法的為public

using system;

using system.xml; 

using system.configuration;

using system.reflection;

using system.io;

namespace subindex

//  public static string readsetting(string key)

//  

//   catch (exception e)

//   

//   return s;

//  }

public static void writesetting(string key, string value)

']", key));

public static void removesetting(string key)

catch (exception e)

return doc;

public static string getconfigfilepath()

public static bool configfileexist()

}

Android如何判斷乙個應用在執行

原址 android中使用activitymanager,以判斷在乙個應用中,或乙個service receiver中應用是否正在執行,以便進行一些相關的處理。這個時候我們需要得到乙個activitymanager,這個manager顧名思意就是管理activity的,它有乙個方法叫getrunni...

ios App 讓自己的應用在其他應用開啟列表顯示

下面就是這例子的主要步驟和 例子是乙個開啟jpg程式。1 在專案的 info.plist檔案中新增 這就是告訴系統,你能開啟 jpg這個檔案型別。objc view plain copy bool openurl nsurl url nsstring annotation id annotation...

變數的應用在spool時

spool的sql語句很是複雜,為了減少執行時間提高效能,我考慮了首先根據索引找出符合條件的記錄總數,並根據總數是否大於0,來對要執行的sql新增條件。如 sql variable a2 number sql select count into a2 from table where length ...