【问题标题】:c# Change textboxwithfont height dynamically [duplicate]c#动态更改textboxwithfont高度[重复]
【发布时间】:2013-06-15 17:48:05
【问题描述】:

我正在尝试让textbox 动态更改其高度,同时保持固定的width。当text 太长并且超出第二行时,textbox 不会resize

textbox 在添加所有文本后调整大小。

以下是我目前正在使用的。

txtwfSupportNotes[i].Multiline = true;
txtwfSupportNotes[i].Text += ds.Tables[0].Rows[i]["Notes"].ToString() 
+ "\r\n\r\n";
Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes[i]
.Text, txtwfSupportNotes[i].Font);
txtwfSupportNotes[i].Width = 355;
txtwfSupportNotes[i].Height = txtSize.Height+5;
txtwfSupportNotes[i].BorderStyle = BorderStyle.FixedSingle;

编辑:得到了修复,见下文。

Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes[i].Text, txtwfSupportNotes[i].Font, txtwfSupportNotes[i].ClientRectangle.Size, TextFormatFlags.WordBreak);
txtwfSupportNotes[i].Height = txtSize.Height+5;

【问题讨论】:

  • 您是否在TextChanged 事件中调用上述内容?我觉得很好。
  • 文本只设置一次,并且在任何大小调整完成之前设置,我将编辑原始帖子以显示示例。
  • 我认为您将其更新为循环的一部分?如果应该固定宽度,则不必每次都设置宽度。

标签: c# dynamic textbox


【解决方案1】:

我假设这是一个 wpf 或 winforms 应用程序,如果是这种情况,请不要设置高度,(但使用换行)然后你的文本框应该动态调整大小。

【讨论】:

    【解决方案2】:

    为什么不使用 TextBox 的 FontChanged 事件呢?这样做:

    private void txtwfSupportNotes_FontChanged(object sender, EventArgs e)
        {
            Size txtSize = TextRenderer.MeasureText(txtwfSupportNotes.Text, txtwfSupportNotes.Font);
            txtwfSupportNotes.Height = txtSize.Height + 5;
        }
    

    【讨论】:

      【解决方案3】:

      如果您使用 MinHeight 属性,我认为它应该动态调整您的文本框:

      txtwfSupportNotes[i].MinHeight = txtSize.Height+5;
      

      【讨论】:

        【解决方案4】:

        检查设计器中文本框控件的“Locked”属性是否为 false?

        【讨论】:

          猜你喜欢
          • 2014-03-29
          • 1970-01-01
          • 2017-07-01
          • 1970-01-01
          • 2011-03-28
          • 2011-09-06
          • 2014-07-20
          • 2012-08-19
          • 2019-03-08
          相关资源
          最近更新 更多