以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何动态设定RadioButton文本的宽度啊  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143967)

--  作者:迷途小童
--  发布时间:2019/12/7 15:16:00
--  如何动态设定RadioButton文本的宽度啊
如题,如何在窗口中动态设定RadioButton文本显示的宽度啊,请教各位专家
--  作者:有点蓝
--  发布时间:2019/12/7 15:28:00
--  
Dim rb As WinForm.RadioButton = e.Form.Controls("RadioButton1")
rb.Width = 100

--  作者:迷途小童
--  发布时间:2019/12/7 15:43:00
--  

不是这个,我想表达的意思是,rb.text内容是动态的,如何把text的内容显示全了

 


--  作者:迷途小童
--  发布时间:2019/12/7 15:44:00
--  

他的宽度不定


--  作者:有点蓝
--  发布时间:2019/12/7 15:46:00
--  
就是这个呀。估算一个1个字符大概多宽。根据字符数量设置控件的高和宽
--  作者:迷途小童
--  发布时间:2019/12/7 16:15:00
--  


        \'生成题目
        dr = DataTables("题库").Find("[序号] = \'" & pd.Name & "\'")
        \'str =
        Forms(Arg0).Controls("Label1").Text = StrToWide("(") & pd.Text &  StrToWide(")") & dr("题目内容") & vbcrlf & vbcrlf \'显示题目内容
        Forms(Arg0).Controls("Label1").Width = Forms(Arg0).Controls("GroupBox1").Width - 100
       
        Dim pbx As WinForm.PictureBox = Forms(Arg0).Controls("PictureBox1")
        Dim h As  Integer \'设定控件高度
        Dim rb_A As WinForm.RadioButton
        Dim rb_B As WinForm.RadioButton
        Dim rb_C As WinForm.RadioButton
        Dim rb_D As WinForm.RadioButton
        Forms("窗口12").RemoveControl("rb_A")
        Forms("窗口12").RemoveControl("rb_B")
        Forms("窗口12").RemoveControl("rb_C")
        Forms("窗口12").RemoveControl("rb_D")
        If dr.IsNull("图片") Then
            pbx.Visible = False
            h = Forms(Arg0).Controls("Label1").Height + Forms(Arg0).Controls("Label1").Top 
        Else
            pbx.Visible = True
            pbx.Top = Forms(Arg0).Controls("Label1").Height + Forms(Arg0).Controls("Label1").Top  \'设定图片位置
            pbx.Image = GetImage(dr("图片")) \'显示图片
            h = pbx.Height + pbx.Top
        End If
        \'创建选项A
        rb_A =  Forms("窗口12").CreateControl("rb_A", ControlTypeEnum.RadioButton)
        rb_A.Text = vbcrlf & "A." & dr("选项_A")
        rb_A.Left = Forms(Arg0).Controls("Label1").Left
        rb_A.Top = h
        rb_A.TextAlign  = ContentAlignment.MiddleLeft
        rb_A.Width = Forms(Arg0).Controls("GroupBox1").Width
       
        Forms("窗口12").Controls("GroupBox1").AddControl(rb_A)

        \'创建选项B
        h = h + rb_A.Height
        rb_B = Forms("窗口12").CreateControl("rb_B", ControlTypeEnum.RadioButton)
        rb_B.Top = h
        rb_B.Left = Forms(Arg0).Controls("Label1").Left
        rb_B.Text = vbcrlf & "B." & dr("选项_B")
        rb_B.Width = Forms(Arg0).Controls("GroupBox1").Width
        rb_B.TextAlign = ContentAlignment.MiddleLeft
        Forms("窗口12").Controls("GroupBox1").AddControl(rb_B)
       
        \'创建选项C
        h = h + rb_B.Height
        rb_C = Forms("窗口12").CreateControl("rb_C", ControlTypeEnum.RadioButton)
        rb_C.Top = h
        rb_C.Left = Forms(Arg0).Controls("Label1").Left
        rb_C.Text = vbcrlf & "B." & dr("选项_C")
        rb_C.Width = Forms(Arg0).Controls("GroupBox1").Width
        rb_C.TextAlign = ContentAlignment.MiddleLeft
        Forms("窗口12").Controls("GroupBox1").AddControl(rb_C)
       
        \'创建选项D
        h = h + rb_C.Height
        rb_D = Forms("窗口12").CreateControl("rb_D", ControlTypeEnum.RadioButton)
        rb_D.Top = h
        rb_D.Left = Forms(Arg0).Controls("Label1").Left
        rb_D.Text = vbcrlf & "D." & dr("选项_D")
        rb_D.Width = Forms(Arg0).Controls("GroupBox1").Width
        rb_D.TextAlign = ContentAlignment.MiddleLeft
        Forms("窗口12").Controls("GroupBox1").AddControl(rb_D)

 

我的选项内容是变动的,RadioButton的宽度根据选项内容自行调整宽度,使内容显示完全,另外也请老师帮看一下,我设定了文本对齐方式,但一直对不齐,我把文件上传上来了

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:考试系统.table


--  作者:有点蓝
--  发布时间:2019/12/7 16:38:00
--  
对不齐是在前面加了一个回车换行导致的,去掉即可

rb_A.Text = vbcrlf & "A." & dr("选项_A") 

--  作者:迷途小童
--  发布时间:2019/12/7 17:18:00
--  

谢谢蓝爸,再请教一下的老师,Label1标签不设定宽度显示内容太长,设定宽度后高度又不随显示内容自动调整这个又怎么解决呢,谢谢!


--  作者:有点蓝
--  发布时间:2019/12/7 17:29:00
--  
高度自动调整

Dim Label1 As WinForm.Label = Forms(Arg0).Controls("Label1")

Label1.Text = StrToWide("(") & pd.Text &  StrToWide(")") & dr("题目内容") & vbcrlf & vbcrlf \'显示题目内容
Label1.Width = Forms(Arg0).Controls("GroupBox1").Width - 100

Dim gc As Graphics = BaseMainform.CreateGraphics()
Dim size As SizeF = gc.MeasureString(Label1.Text, Label1.Font,Label1.Width)
Label1.Height = size.Height 

--  作者:迷途小童
--  发布时间:2019/12/7 17:49:00
--  
老师,我测试了,还是行,没有变化的图片点击可在新窗口打开查看