feat: Implement UI for drawing parameter input and note template preview.
This commit is contained in:
parent
63db980cdc
commit
3b15853821
@ -758,7 +758,33 @@ namespace CadParamPluging.UI
|
|||||||
private ComboBox CreateEnumCombo(ParamDefinition def, string initialValue)
|
private ComboBox CreateEnumCombo(ParamDefinition def, string initialValue)
|
||||||
{
|
{
|
||||||
// Allow manual edit to match many "下拉列表...可手动编辑" cases.
|
// Allow manual edit to match many "下拉列表...可手动编辑" cases.
|
||||||
var cb = new ComboBox { DropDownStyle = ComboBoxStyle.DropDown };
|
var cb = new ComboBox { DropDownStyle = ComboBoxStyle.DropDown, DrawMode = DrawMode.OwnerDrawFixed };
|
||||||
|
cb.DrawItem += (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Index < 0) return;
|
||||||
|
e.DrawBackground();
|
||||||
|
var text = cb.GetItemText(cb.Items[e.Index]);
|
||||||
|
TextRenderer.DrawText(e.Graphics, text, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
|
||||||
|
e.DrawFocusRectangle();
|
||||||
|
|
||||||
|
if (cb.DroppedDown && (e.State & DrawItemState.Selected) == DrawItemState.Selected)
|
||||||
|
{
|
||||||
|
int lastHovered = cb.Tag is int i ? i : -1;
|
||||||
|
if (lastHovered != e.Index)
|
||||||
|
{
|
||||||
|
cb.Tag = e.Index;
|
||||||
|
var point = cb.PointToClient(Cursor.Position);
|
||||||
|
point.Y += 20;
|
||||||
|
_toolTip.Show(text, cb, point.X, point.Y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cb.DropDownClosed += (s, e) =>
|
||||||
|
{
|
||||||
|
_toolTip.Hide(cb);
|
||||||
|
cb.Tag = -1;
|
||||||
|
};
|
||||||
|
|
||||||
var list = (def.EnumOptions ?? new List<string>())
|
var list = (def.EnumOptions ?? new List<string>())
|
||||||
.Where(x => !string.IsNullOrWhiteSpace(x))
|
.Where(x => !string.IsNullOrWhiteSpace(x))
|
||||||
.Select(x => x.Trim())
|
.Select(x => x.Trim())
|
||||||
|
|||||||
@ -794,7 +794,35 @@ namespace CadParamPluging.UI
|
|||||||
var cb = new ComboBox
|
var cb = new ComboBox
|
||||||
{
|
{
|
||||||
DropDownStyle = ComboBoxStyle.DropDownList,
|
DropDownStyle = ComboBoxStyle.DropDownList,
|
||||||
Width = 160
|
Width = 160,
|
||||||
|
DrawMode = DrawMode.OwnerDrawFixed
|
||||||
|
};
|
||||||
|
|
||||||
|
var toolTip = new ToolTip();
|
||||||
|
cb.DrawItem += (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Index < 0) return;
|
||||||
|
e.DrawBackground();
|
||||||
|
var text = cb.GetItemText(cb.Items[e.Index]);
|
||||||
|
TextRenderer.DrawText(e.Graphics, text, e.Font, e.Bounds, e.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
|
||||||
|
e.DrawFocusRectangle();
|
||||||
|
|
||||||
|
if (cb.DroppedDown && (e.State & DrawItemState.Selected) == DrawItemState.Selected)
|
||||||
|
{
|
||||||
|
int lastHovered = cb.Tag is int i ? i : -1;
|
||||||
|
if (lastHovered != e.Index)
|
||||||
|
{
|
||||||
|
cb.Tag = e.Index;
|
||||||
|
var point = cb.PointToClient(Cursor.Position);
|
||||||
|
point.Y += 20;
|
||||||
|
toolTip.Show(text, cb, point.X, point.Y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
cb.DropDownClosed += (s, e) =>
|
||||||
|
{
|
||||||
|
toolTip.Hide(cb);
|
||||||
|
cb.Tag = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
ResetComboBoxItems(cb, items);
|
ResetComboBoxItems(cb, items);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user