0

我制作了一个自定义 MessageBox,但在最大化带有标签大小的 msgBox 时遇到了问题。如果我的标签太长太大,那么我希望我的自定义 MessageBox 变大或变小也取决于标签大小。我可以在 Windows 窗体选项中设置它还是我能做什么?

我的代码:

      public static DialogResult Show(string Text, string Caption, string btnOk, string btnCancel)
      {

        MsgBox = new CustomMsgBox();
        MsgBox.label1.Text = Text;
        MsgBox.button1.Text = btnOk;
        MsgBox.button2.Text = btnCancel;
        MsgBox.AutoSize = true;
        result = DialogResult.No;
        MsgBox.ShowDialog();

        return result;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        result = DialogResult.Yes;
        MsgBox.Close();
    }
4

2 回答 2

0

您可以在其中MsgBox_load(object sender, EventArgs e)添加以下代码:

private void MsgBox_Load(object sender, EventArgs e)
{
    this.Width = label1.Width + label1.Location.X;
    //do other things you need in the load event.
}

这将width根据宽度 + label1 的 X 坐标位置设置 MsgBox 的集合。由于标签可能在也可能不在完整的左侧,这将显示完整的标签并相应地最大化 MsgBox。

于 2013-01-12T10:56:28.973 回答
0

试试这个代码。

在设计师

  1. 拖放FlowLayoutPanel控件,根据需要调整流布局宽度
  2. 拖放您的Label控件

在 .cs 文件中

例如,我在表单加载事件中绑定一些文本并调用调整大小事件

    private void CustMsgBox_Load(object sender, EventArgs e)
    {
        //Binding some long text to the label
        label1.Text = "ga,dsa,bdas,bcc,asbcc,asc,asbc,a c,asc,n asc,baskcas,c sam ckavcmas cmas ckasvmas cmas ckavcma cmaga,dsa,bdas,bcc,asbcc,asc,asbc,a c,asc,n asc,baskcas,c sam ckavcmas cmas ckasvmas cmas ckavcma cmaga,dsa,bdas,bcc,asbcc,asc,asbc,a c,asc,n asc,baskcas,c sam ckavcmas cmas ckasvmas cmas ckavcma cmaga,dsa,bdas,bcc,asbcc,asc,asbc,a c,asc,n asc,baskcas,c sam ckavcmas cmas ckasvmas cmas ckavcma cma";
        this.ResizeWindow(); // Calling this event will resize the label and window
    }

将一些文本绑定到标签后,调用以下方法

    private void ResizeWindow()
    {
        int iHeight = flowLayoutPanel1.Height;
        flowLayoutPanel1.Height = label1.Height;
        this.Height += (flowLayoutPanel1.Height - iHeight); //This will increase the height of the window accordingly
        this.Top=Convert.ToInt32((Screen.PrimaryScreen.WorkingArea.Height-this.Height)/2); //This will position the window center vertically
    }
于 2013-01-12T11:49:54.947 回答