

ComboBox 單欄、無搜尋;TextBox 空間不足。解決方案:點擊下拉 → 顯示浮動層 (可含 DataGridView、RichTextBox 等任意控件)。
ComboBox.DropDown 事件 → 顯示浮動控件。Leave 事件 → 自動隱藏 (可關閉)。ComboBox.DropDownHeight = 1 隱藏原生下拉框 (設 0 無效)。Parent.Left/Top 至 Form,確保浮動層不被容器裁切。FloatControlWidthMode.AutoWidth)。Form.Controls.Add() 置於最上層 (BringToFront),避免被遮擋。ShowFloatControl/HideFloatControl 供外部程式碼觸發。FloatControlDisplayChanging/Changed 事件供攔截與擴充。void TargetComboBox_DropDown(object sender, EventArgs e)
{
if (m_FloatControl != null) ShowFloatControl(m_TargetComboBox, m_FloatControl);
}
public void ShowFloatControl(Control dropdown, Control floatCtrl)
{
// 邊界計算、加入 Form.Controls、BringToFront、Select()
// 觸發 DisplayChanging/Changed 事件
}
MouseEnter 依 MoveableDirection (All/Horizontal/Vertical) 設定游標 (SizeAll/SizeWE/SizeNS)。MouseDown 記錄 Control.MousePosition。MouseMove (左鍵) 計算位移 → 更新 MovableControl.Location,依方向限制 X/Y。MouseLeave 恢復預設游標。CanExtend (判斷是否為 HandleControl 後代)、Get/SetHandleMove。MovableComponent1.HandleMove 布林屬性。true,關閉按鈕設 false,避免點擊關閉卻觸發拖曳。