70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
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 { }
|
|
}
|
|
}
|
|
}
|