动态添加了checkbox之后调试提示:
类型“CheckBox”的控件“_ctl4”必须放在具有 runat=server 的窗体标记内
--------------------
但是如果在工具栏中拖一个panel到窗体中,
则动态添加checkbox到其中则没有错误
另外如果在动态生成的panel中动态加个label则也没有错误
----------------------
取值问题,好要解决....泣谢...~·!代码如下:
=====================
        Dim str As String
        Dim cb1 As New CheckBox
        Dim cb2 As New CheckBox
        Dim lb As New Label
        lb.Text = "题目"
        cb1.Checked = True
        cb1.Text = "选项"
        cb2.Checked = True
        cb2.Text = "选项"
        Panel1.Controls.Add(lb)
        Panel1.Controls.Add(New LiteralControl("<br/>"))
        Panel1.Controls.Add(cb1)
        Dim pR As New Panel
        pR.HorizontalAlign = HorizontalAlign.Right
        pR.Wrap = True
        pR.BackColor = System.Drawing.Color.Gainsboro
        Page.Controls.Add(pR)
        Dim l As New Label
        l.Text = "This panel contains a right justified label."
        pR.Controls.Add(l)
        pR.Controls.Add(New LiteralControl("<br/>"))
        pR.Controls.Add(cb2)

解决方案 »

  1.   

    首先把你的程序修改如下:Dim str As String
    Dim cb1 As New CheckBox
    Dim cb2 As New CheckBox
    Dim lb As New Label
    lb.Text = "题目"
    cb1.Text = "选项"
    cb2.Text = "选项"
    Panel1.Controls.Add(lb)
    Panel1.Controls.Add(New LiteralControl("<br/>"))
    Panel1.Controls.Add(cb1)
    Dim pR As New Panel
    pR.HorizontalAlign = HorizontalAlign.Right
    pR.Wrap = True
    pR.BackColor = System.Drawing.Color.Gainsboro
    Page.Controls.Add(pR)
    Dim l As New Label
    l.Text = "This panel contains a right justified label."
    pR.Controls.Add(l)
    pR.Controls.Add(New LiteralControl("<br/>"))
    pR.Controls.Add(cb2)if not ispostback then
    cb1.Checked = True
    cb2.Checked = True
    end if其次,在按钮事件中如下取值//求取第一个复选框,因为你上面没有赋予此复选框ID,否则你可用findcontrol来搜索更准确
    dim chk1 as CheckBox = Ctype(Panel1.Controls(0),CheckBox)
    值 = ...
    dim chk2 as CheckBox = Ctype(Panel1.Controls(1),CheckBox)
    值 = ...
      

  2.   

    <pre> 以固定宽度字体渲染文本。 用我说的方法就可以了,
      

  3.   

    hchxxzx(NET?摸到一点门槛) 
    那个程序修改了一下,有什么意义?
    试了下,还是不行....
      

  4.   

    根据错误提示,
    出错的原因应该是:
    panel控件pR没有放到
    <form method="post" runat="server">
    </form>中...
    因为如果把cb1和cb2都放到panel中
    是没有错误的...
    ===============
    如何解决呢...?
      

  5.   

    啊?没有看清楚,你这个panel居然也是后台生成的,我还以为你是前台放一个呢.
    这样,你在添加的时候,写的有问题
    Page.Controls.Add(pR)改为
    Page.Controls[1].Controls.Add(pR)另外,最好每一个放进去的控件都要有ID命名
      

  6.   

    不行哦,语法错误:属性访问必须分配给属性或使用他的值
    =========
    要不帮忙把ID加上,我看看,
    今早凌晨两点,我加了ID后说我没定义,不能用.
    ----
    郁闷啊!!!~
      

  7.   

    还有,如果在前台的panel1中,
    添加两个radiobutton,怎么用着不爽呢,
    两个都可以选上,
    选上就不能恢复...
    为啥子列?
    ====================
    感冒了,,,,,,,
    烦,,,,,
    我的毕业设计.....
      

  8.   

    现在有两个问题,
    我把他们放在不同的页面里,
    下面把代码呈现给大家,
    请大家帮忙,群策群力,
    谢了!!!
    ===================================
    第一个:
    前台在工具箱拖了一个panel,代号panel1,
    在后台动态添加checkbox和radiobutton到panel1上,
    出现的错误是,radiobutton只能选中,不能消除选中,
    而且两个radiobutton可以同时选中,咋个回事嘛?
    代码:html:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="question.aspx.vb" Inherits="design.WebForm6"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm6</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <P>&nbsp;</P>
    <P>
    <asp:Panel id="Panel1" runat="server" Height="112px"></asp:Panel></P>
    </FONT>
    </form>
    </body>
    </HTML>
    -------------------------------------
    aspx.vb:
    Public Class WebForm6
        Inherits System.Web.UI.Page
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Dim str As String
            Dim cb1 As New RadioButton
            Dim cb2 As New CheckBox
            Dim cb3 As New RadioButton
            Dim lb As New Label
            lb.Text = "题目"
            'cb1.Checked = True
            cb1.Text = "选项"
            cb2.Checked = True
            cb2.Text = "选项"
            cb3.Text = "选项"
            Panel1.Controls.Add(lb)
            Panel1.Controls.Add(New LiteralControl("<br/>"))
            Panel1.Controls.Add(cb1)
            Panel1.Controls.Add(New LiteralControl("<br/>"))
            Panel1.Controls.Add(cb2)
            Panel1.Controls.Add(New LiteralControl("<br/>"))
            Panel1.Controls.Add(cb3)
    end sub
    end class
    ======================================
    第二个问题:在后台动态添加panel,并动态添加checkbox到panel上,
    提示错误:类型“CheckBox”的控件“_ctl4”必须放在具有 runat=server 的窗体标记内
    但如果添加的是lable而不是checkbox则运行无误
    代码如下:
    html:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="subject.aspx.vb" Inherits="design.WebForm7"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm7</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体"></FONT>
    </form>
    </body>
    </HTML>
    ------------------------
    aspx.vb:
    Public Class WebForm7
        Inherits System.Web.UI.Page
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Dim pR As New Panel
            pR.HorizontalAlign = HorizontalAlign.Right
            pR.Wrap = True
            pR.BackColor = System.Drawing.Color.Gainsboro
            Page.Controls.Add(pR)
            Dim l As New Label
            l.Text = "This panel contains a right justified label."
            pR.Controls.Add(l)
            Dim cb2 As New CheckBox
            cb2.Text = "选项"
            pR.Controls.Add(New LiteralControl("<br/>"))
            pR.Controls.Add(cb2)
        End SubEnd Class
      

  9.   

    前台的panel,后台加的checkbox,加id,找control...
    ok。