using System;
using System.Drawing;
using System.Windows.Forms;
namespace 成套报价软件
{
///
/// 批量插入询问 的交互逻辑(2026-10-01):
/// 多选箱号插入元件时的确认框(用户已删"仅当前行"按钮,2026-10-01)。
/// 返回 DialogResult:Yes=全部插入 / Cancel=取消
/// 勾选状态读 属性 不再询问(勾选且点了 Yes 才会被调用方记忆)
/// 用法:using (var f = new 批量插入询问 { 消息 = "..." }) { f.ShowDialog(父窗体); ... }
/// 布局在 批量插入询问.Designer.cs,可用 SD 设计器打开微调。
///
public partial class 批量插入询问
{
/// 构造函数:必须调用 InitializeComponent 初始化设计器控件
/// ★ 修复(2026-10-01):此前漏写构造函数,控件全为 null,设置消息时抛
/// NullReferenceException——这就是"点了新建元件没反应不弹窗"的根因。
public 批量插入询问()
{
InitializeComponent();
}
/// 消息文本(设置后按内容自适应标签与窗体高度)。
public string 消息
{
get { return lbl消息.Text; }
set
{
lbl消息.Text = value ?? "";
自适应高度();
}
}
/// "以后不再询问"复选框勾选状态。
public bool 不再询问
{
get { return chk不再询问.Checked; }
}
///
/// 按消息文本实际高度自适应:标签变高/变矮时,复选框与按钮行跟着移动,
/// 窗体高度同步调整(设计器基准布局,运行时只纵向平移,不动横向布局)。
///
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 { }
}
}
}