【说明下界面上要用到的控件:1个TextBox,一个Button,16个CheckBox】
一个TextBox 输入一个由1和0组成的16位值(例如:1001110011001101) 然后点击“确定”按钮 16个CheckBox的状态会发生正确的变化
举个例子: 例如在TEXTBOX中输入1000000000000001 然后点击“确定”按钮,那么16个ChkckBox中,两边的ChkckBOX会为选中状态 中间的那些为未选中状态。(既1为选中状态,0为未选中状态)
请问这个功能应该如何实现,希望高手指点一下,感激不尽!!!
PS:因为TEXTBOX得值为STRING型的,应该转换成什么类型的才能容下这么大的数,希望能写出代码,感激不尽!!!
一个TextBox 输入一个由1和0组成的16位值(例如:1001110011001101) 然后点击“确定”按钮 16个CheckBox的状态会发生正确的变化
举个例子: 例如在TEXTBOX中输入1000000000000001 然后点击“确定”按钮,那么16个ChkckBox中,两边的ChkckBOX会为选中状态 中间的那些为未选中状态。(既1为选中状态,0为未选中状态)
请问这个功能应该如何实现,希望高手指点一下,感激不尽!!!
PS:因为TEXTBOX得值为STRING型的,应该转换成什么类型的才能容下这么大的数,希望能写出代码,感激不尽!!!
string strValue = TextBox1.Text;
char[] chrValue = strValue.ToCharArray();
for (int i = 0; i < chrValue.Length; i++)
{
CheckBox chk = this.FindControl("checkbox" + i.ToString()) as CheckBox;
if (chk != null)
{
if (chrValue[i].ToString() == "1")
chk.Checked = true;
else
chk.Checked = false;
}
}
空间数组
16位 放入16位长度的数组中
checkbox 放入checkboxlist中
然后 数组下标 对应checkboxlist下标
请问怎么样截取String的位来控制 CheckBox 因为我还要实现一个功能 就是这个功能的相反, 用CheckBox去控制Text 好像应该用截取String的位的方法
就算转成10进制,最大也才65535,一点也不大啊。没有特殊要求的话,存varchar就好了,不用转其他类型
lt.Add(CheckBox01);
lt.Add(CheckBox02);
...string sz=textbox.text;
for(int i=0;i<sz.length;i++)
{
if(sz[i]=='1')
{
lt[i].Checked=true;
}
else
{
lt[i].Checked=false;
}
}
for (int i = 0; i < 16; i++)
{
CheckBox chk = this.FindControl("checkbox" + i.ToString()) as CheckBox;
if (chk != null)
{
if (chrValue[i].ToString() == "1")
strValue += "1";
}
else
strValue += "0";
}
int j = 1;//checkbox的下标值
for (int i = 0; i < t.Length; i++)
{
string key = "checkBox" + j;
if (t[i].ToString() == "1")
{
CheckBox c = this.Controls[key] as CheckBox;
c.Checked=true;
}
else
{
CheckBox c = this.Controls[key] as CheckBox;
c.Checked = false;
}
j++;
}
if (chk.Checked)
strValue += "1";
string str=xx.text.trim().tostring()
list<string> list1=new list<string>();
for(int i=0;i<str.length;i++)
{
list1.add(str.substring(i,1))
}for (int j=0;j<list1.count;j++)
{
CheckBox xx=(CheckBox)xxx+i.tostring()xx.check=list1[j]
}
大概这样
CheckBox的命名要这样的形式 CheckBox1 CheckBox2 CheckBox3
如果不是这样的形式,你就要把CheckBox的名字放进一个string[]数组里面,在后面循环时赋值
string str=xx.text.trim().tostring()
list<string> list1=new list<string>();
for(int i=0;i<str.length;i++)
{
list1.add(str.substring(i,1))
}for (int j=0;j<list1.count;j++)
{
CheckBox xx=(CheckBox)this.FindControl(string.Format("CheckBox{0}", j)xx.check=list1[j]
}
char[] chrValue = strValue.ToCharArray();
for (int i = 0; i < chrValue.Length; i++)
{
CheckBox chk = this.FindControl("checkbox" + i.ToString()) as CheckBox;
if (chk != null)
{
chk.Checked =bool.Parse(charValue[i]);
}
}
char[] chrValue = strValue.ToCharArray();
for(int i=0;i<chrValue.Length;i++)
{
CheckBox chk = this.FindControl("checkbox" + i.ToString()) as CheckBox;
if (chk != null)
{
chk.Checked =bool.Parse(chrValue[i].ToString());
}
}
for (int i = 0; i < 16; i++)
{
CheckBox chk = this.FindControl("checkbox" + i.ToString()) as CheckBox;
if (chk != null)
{
strValue += chk.Checked ? "1" : "0";
}
}
不能那么马虎,所以决定写个精确的
<div class="Br">
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:CheckBox ID="CheckBox2" runat="server" />
<asp:CheckBox ID="CheckBox3" runat="server" />
<asp:CheckBox ID="CheckBox4" runat="server" />
<asp:CheckBox ID="CheckBox5" runat="server" />
<asp:CheckBox ID="CheckBox6" runat="server" />
<asp:CheckBox ID="CheckBox7" runat="server" />
<asp:CheckBox ID="CheckBox8" runat="server" />
<asp:CheckBox ID="CheckBox9" runat="server" />
<asp:CheckBox ID="CheckBox10" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div> protected void Button1_Click(object sender, EventArgs e)
{string str=TextBox1.Text.Trim().ToString();
List<string> list1 = new List<string>();
for(int i=0;i<str.Length-1;i++)
{
list1.Add(str.Substring(i,1));
}for (int j=1;j<9;j++)
{
CheckBox xx = (CheckBox)this.FindControl(string.Format("CheckBox{0}", j));
if (xx!=null)
{
xx.Checked = list1[j].ToString() == "1" ? true : false;
}
}
}
泛型要
using System.Collections.Generic;
{string str=TextBox1.Text.Trim().ToString();for(int i=1;i<=str.Length;i++)
{
CheckBox xx = (CheckBox)this.FindControl(string.Format("CheckBox{0}", i));
if (xx != null)
{
xx.Checked = str.Substring(i-1, 1).ToString() == "1" ? true : false;
}
} }
不过始果只是实现你的功能,改为字符串最合理了.上面的大多都是
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text="生成checkbox" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click"
Text="计算textbo" />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="检查位数" />
<br />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>
using System;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class Default5 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
LoadCheckBoxes(false);
} private void LoadCheckBoxes(bool isLoadCompleted)
{
this.PlaceHolder1.Controls.Clear();
for (var i = 0; i < Data.Length; i++)
{
var c = new CheckBox();
c.ID = "chk" + i.ToString();
this.PlaceHolder1.Controls.Add(c);
if (isLoadCompleted)
{
c.Text = "第" + i.ToString() + "位";
c.Checked = Data[i] == '1';
}
this.PlaceHolder1.Controls.Add(new LiteralControl { Text = "<br />" });
}
} private char[] Data
{
get
{
var x = ViewState["data"];
if (x == null)
return new char[0];
else
return (char[])x;
}
set
{
ViewState["data"] = value;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
var cs = this.TextBox1.Text.Trim().ToCharArray();
if (cs.Any(c => c != '0' && c != '1'))
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "alert('文本框中只能有0和1。');", true); Data = cs;
LoadCheckBoxes(true);
}
protected void Button3_Click(object sender, EventArgs e)
{
var len = this.TextBox1.Text.Trim().Length;
if (len != 16)
ScriptManager.RegisterStartupScript(this, this.GetType(), "",
string.Format("alert('文本框中应该输入16个字符,现在只有{0}个。');", len), true);
}
protected void Button2_Click(object sender, EventArgs e)
{
this.TextBox1.Text = string.Empty;
for (var i = 0; i < Data.Length; i++)
{
var c = (CheckBox)this.PlaceHolder1.FindControl("chk" + i.ToString());
Data[i] = c.Checked ? '1' : '0';
this.TextBox1.Text += Data[i];
}
}
}
楼主没有说明他要的是winform还是webform,由于C#版问winform的较多,所以我就随手写了个winform的
我和你的出发点是一样的,就是演示如何写出程序
但如何写出值钱或者有价值的程序,不在我回答问题的范畴之内
大家在沟通中互相补益,BrainStorm不就是这么来的。
经历中午的签名门事件之后,sp1234不是刷得就把签名改了么?
function chekall()
{
var checkb='';
var j=0;
var textj=document.getElementById("Text1").value;
checkb=document.getElementsByTagName("input");
for(i=0;i<checkb.length;i++)
{
if(checkb[i].type=="checkbox")
{
alert(textj.substring(j,j+1));
if(textj.substring(j,j+1)=='0')
checkb[i].checked=false;
else
checkb[i].checked=true;
j=j+1;
}
else
{
}
}
}
</script>