📄 tree_widget.cs
字号:
}
}
}
catch
{
}
}
return end;
}
protected virtual void on_focus_edit(Rectangle rcEdit, string strInitText, object context)
{
if (((rcEdit.Left < rcEdit.Right) && (rcEdit.Top < rcEdit.Bottom)) && (((rcEdit.Left < base.ClientRectangle.Right) && (rcEdit.Top < base.ClientRectangle.Bottom)) && ((rcEdit.Right > base.ClientRectangle.Left) && (rcEdit.Bottom > base.ClientRectangle.Top))))
{
int x = rcEdit.Left;
int right = rcEdit.Right;
int y = rcEdit.Top;
int bottom = rcEdit.Bottom;
if (x <= base.ClientRectangle.Left)
{
x = base.ClientRectangle.Left + base.get_Margin().get_Left();
}
if (right >= base.ClientRectangle.Right)
{
right = base.ClientRectangle.Right - base.get_Margin().get_Right();
}
if (y <= base.ClientRectangle.Top)
{
y = base.ClientRectangle.Top + base.get_Margin().get_Top();
}
if (bottom >= base.ClientRectangle.Bottom)
{
bottom = base.ClientRectangle.Bottom - base.get_Margin().get_Bottom();
}
if ((x < right) && (y < bottom))
{
if (this.m_item_edit == null)
{
this.m_item_edit = new item_edit_control();
}
if (this.m_item_edit.Visible)
{
this.m_item_edit.cancel();
}
this.m_item_edit.m_init_text = strInitText;
this.m_item_edit.m_context = context;
this.m_item_edit.Location = new System.Drawing.Point(x, y);
this.m_item_edit.Text = strInitText;
this.m_item_edit.Size = new Size(right - x, bottom - y);
if (this.m_item_edit.Height < rcEdit.Height)
{
this.m_item_edit.Top += (int) (((float) (rcEdit.Height - this.m_item_edit.Height)) / 2f);
}
this.m_item_edit.Visible = true;
this.m_item_edit.Focus();
this.m_item_edit.SelectAll();
this.m_item_edit_backGround.Location = new System.Drawing.Point(x, y);
this.m_item_edit_backGround.Size = new Size(right - x, bottom - y);
this.m_item_edit_backGround.Visible = true;
}
}
}
private void on_focus_edited()
{
if ((this.m_focus_item != null) || (this.m_focus_item.data != null))
{
this.m_focus_item.data.on_after_edit(this.m_item_edit.Text, this.m_item_edit.m_context);
}
}
private void on_update_dragging_img(int yOffset)
{
new System.Drawing.Point(base.ClientRectangle.Left, yOffset);
}
protected override void OnDragDrop(DragEventArgs drgevent)
{
base.OnDragDrop(drgevent);
this.m_fDragging = false;
this.m_fToggling = false;
if (!drgevent.Data.GetDataPresent("{66FFF7D8-C9A4-4a5d-9707-82D22DF3633F}"))
{
this.OnDragDropSomething(drgevent);
}
else
{
try
{
dragging_data data = drgevent.Data.GetData("{66FFF7D8-C9A4-4a5d-9707-82D22DF3633F}") as dragging_data;
if (this == data.host_widget)
{
this.OnDragDropItem(data);
}
else
{
this.OnDragDropItemInto(data);
}
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
}
protected virtual void OnDragDropItem(dragging_data data)
{
if (this != data.host_widget)
{
throw new ArgumentException("data.host_widget must be the current tree_widget object", "data");
}
}
protected virtual void OnDragDropItemInto(dragging_data data)
{
if (this == data.host_widget)
{
throw new ArgumentException("data.host_widget can not be the current tree_widget object", "data");
}
}
protected virtual void OnDragDropSomething(DragEventArgs drgevent)
{
}
protected virtual void OnDragItemIntoOver(DragEventArgs drgevent, dragging_data data)
{
}
protected virtual void OnDragItemOver(DragEventArgs drgevent, dragging_data data)
{
}
protected override void OnDragLeave(EventArgs e)
{
base.OnDragLeave(e);
this.OnMouseLeave(e);
}
protected override void OnDragOver(DragEventArgs drgevent)
{
base.OnDragOver(drgevent);
System.Drawing.Point point = base.PointToClient(Cursor.Position);
MouseEventArgs e = new MouseEventArgs(MouseButtons.None, 0, point.X, point.Y, 0);
this.OnMouseMove(e);
if (e.Y < (base.ClientRectangle.Top + 10))
{
this.LineScroll(false, true);
}
else if (e.Y > (base.ClientRectangle.Bottom - 10))
{
this.LineScroll(true, true);
}
if (!drgevent.Data.GetDataPresent("{66FFF7D8-C9A4-4a5d-9707-82D22DF3633F}"))
{
this.OnDragSomethingOver(drgevent);
}
else
{
try
{
dragging_data data = drgevent.Data.GetData("{66FFF7D8-C9A4-4a5d-9707-82D22DF3633F}") as dragging_data;
if (this == data.host_widget)
{
this.OnDragItemOver(drgevent, data);
}
else
{
this.OnDragItemIntoOver(drgevent, data);
}
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
}
protected virtual void OnDragSomethingOver(DragEventArgs drgevent)
{
}
protected override void OnHandleDestroyed(EventArgs e)
{
base.OnHandleDestroyed(e);
this.clear(false);
}
private void OnHScroll(ScrollEventArgs se)
{
win32api_wrapper.SCROLLINFO si = new win32api_wrapper.SCROLLINFO();
si.cbSize = 0x1c;
si.fMask = 0x17;
win32api_wrapper.GetScrollInfo(base.Handle, 0, ref si);
si.fMask = 4;
switch (se.Type)
{
case ScrollEventType.SmallDecrement:
si.nPos -= 6;
if (si.nPos < si.nMin)
{
si.nPos = si.nMin;
}
break;
case ScrollEventType.SmallIncrement:
si.nPos += 6;
if (si.nPos > si.nMax)
{
si.nPos = si.nMax;
}
break;
case ScrollEventType.LargeDecrement:
si.nPos -= (int) si.nPage;
if (si.nPage > 6)
{
si.nPos += 6;
}
if (si.nPos < si.nMin)
{
si.nPos = si.nMin;
}
break;
case ScrollEventType.LargeIncrement:
si.nPos += (int) si.nPage;
if (si.nPage > 6)
{
si.nPos -= 6;
}
if (si.nPos > si.nMax)
{
si.nPos = si.nMax;
}
break;
case ScrollEventType.ThumbPosition:
case ScrollEventType.ThumbTrack:
si.nPos = se.NewValue;
break;
case ScrollEventType.First:
si.nPos = si.nMin;
break;
case ScrollEventType.Last:
si.nPos = si.nMax;
break;
}
win32api_wrapper.SetScrollInfo(base.Handle, 0, ref si, true);
win32api_wrapper.PostMessage(base.Handle, 0x40a, (IntPtr) 2, IntPtr.Zero);
}
protected void OnItemDoubleClick(object sender, item_type item)
{
tree_widget_item_handler itemDoubleClick = this.ItemDoubleClick;
if (itemDoubleClick != null)
{
itemDoubleClick(this, item);
}
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
if (this.m_item_edit.Visible && !this.m_item_edit.Focused)
{
this.m_item_edit.ok();
}
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
base.OnMouseDoubleClick(e);
if (!this._handledMouseClick && base.ClientRectangle.Contains(e.X, e.Y))
{
tree<item_type>.iterator iterator = this.browse_items(new browse_item_handler(this.mousedoubleclick_handler), e);
if (!iterator.is_end)
{
this.OnItemDoubleClick(this, iterator.data);
}
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
base.Focus();
if (base.ClientRectangle.Contains(e.X, e.Y) && ((MouseButtons.Left == e.Button) || (MouseButtons.Right == e.Button)))
{
this.m_lastButtonDown = new MouseEventArgs(e.Button, e.Clicks, e.X, e.Y, e.Delta);
if ((MouseButtons.Left == e.Button) && this.m_item_edit.Visible)
{
this.m_item_edit.ok();
}
tree<item_type>.iterator item = this.browse_items(new browse_item_handler(this.mousedown_handler), e);
if ((e.Button == MouseButtons.Left) || (e.Button == MouseButtons.Right))
{
if (this.multi_select)
{
if (MouseButtons.Left == e.Button)
{
if (8 == (this.m_lastLButtonDownMsg.WParam.ToInt32() & 8))
{
if (this.m_selected_items.Contains(item))
{
this.remove_selected_item(item, true);
}
else
{
this.add_selected_item(item, true);
}
}
else if (4 == (this.m_lastLButtonDownMsg.WParam.ToInt32() & 4))
{
this.select_items(item, true);
}
else
{
this.select_singleitem(item, true);
}
this.change_focus_item(item, true);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -