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

このコードを試してください。

デザイナーで

  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 に答える
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 に答える