基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)

This commit is contained in:
dqb-dev
2026-10-01 22:15:22 +08:00
commit 1e65792b09
499 changed files with 204579 additions and 0 deletions
@@ -0,0 +1,69 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace 成套报价软件
{
/// <summary>
/// 批量插入询问 的交互逻辑(2026-10-01):
/// 多选箱号插入元件时的确认框(用户已删"仅当前行"按钮,2026-10-01)。
/// 返回 DialogResult:Yes=全部插入 / Cancel=取消
/// 勾选状态读 属性 不再询问(勾选且点了 Yes 才会被调用方记忆)
/// 用法:using (var f = new 批量插入询问 { 消息 = "..." }) { f.ShowDialog(父窗体); ... }
/// 布局在 批量插入询问.Designer.cs,可用 SD 设计器打开微调。
/// </summary>
public partial class 批量插入询问
{
/// <summary>构造函数:必须调用 InitializeComponent 初始化设计器控件
/// ★ 修复(2026-10-01):此前漏写构造函数,控件全为 null,设置消息时抛
/// NullReferenceException——这就是"点了新建元件没反应不弹窗"的根因。</summary>
public 批量插入询问()
{
InitializeComponent();
}
/// <summary>消息文本(设置后按内容自适应标签与窗体高度)。</summary>
public string 消息
{
get { return lbl消息.Text; }
set
{
lbl消息.Text = value ?? "";
自适应高度();
}
}
/// <summary>"以后不再询问"复选框勾选状态。</summary>
public bool 不再询问
{
get { return chk不再询问.Checked; }
}
/// <summary>
/// 按消息文本实际高度自适应:标签变高/变矮时,复选框与按钮行跟着移动,
/// 窗体高度同步调整(设计器基准布局,运行时只纵向平移,不动横向布局)。
/// </summary>
private void 自适应高度()
{
try
{
lbl消息.AutoSize = false;
int textH = TextRenderer.MeasureText(lbl消息.Text, lbl消息.Font,
new Size(lbl消息.MaximumSize.Width, 0),
TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl).Height;
int delta = textH - lbl消息.Height;
if (delta == 0) return;
lbl消息.Height = textH;
chk不再询问.Top += delta;
btn取消.Top += delta;
btn全部插入.Top += delta;
// 解除设计器设的最大/最小尺寸限制后调整窗体高度
this.MaximumSize = new Size(0, 0);
this.MinimumSize = new Size(0, 0);
this.Height += delta;
}
catch { }
}
}
}