在项目加载的时候往listbox1里添加了checkbox,listbox2添加了textbox,如下:
for (int i = 0; i < tbl.Rows.Count; i++)
{
CheckBox ckbids= new CheckBox();
ckbids.Name = "ckbIDS" + i.ToString();
ckbids.Height = 20;
ckbids.HorizontalAlignment = HorizontalAlignment.Stretch;
ckbids.Content = tbl.Rows[i]["ids_name"].ToString();
this.listbox1.Items.Add(ckbids); TextBox txtIDSNum = new TextBox();
txtIDSNum.Name = "txtIDSNum" + i.ToString();
txtIDSNum.Width = 100;
txtIDSNum.Height = 20;
txtIDSNum.ToolTip = tbl.Rows[i]["ids_name"].ToString();
//txtIDSNum.Content = i.ToString();
this.listbox2.Items.Add(txtIDSNum);
}
在保存的时候,我试图通过选定的checkbox获取textbox的值,应为是很多个动态生成的,我用了findname方法,如下:
foreach (CheckBox ckb in listbox1.Items)
{
if (ckb.IsChecked == true)
{
string txtIDSNum ="txtIDSNum"+ ckb.Name.Replace("ckbIDS", "");
string test1 = ((TextBox)this.lstIDSNum.FindName("txtIDSNum2")).Text.Trim();
string test2 = ((TextBox)this.FindName(txtIDSNum)).Text.Trim();
if (((TextBox)lstIDSNum.FindName(txtIDSNum)).Text.Trim() == null)
{
msg.TipMsg("IDS的序号不能为空,请您输入!", "提示");
return;
}
idsNum++;
}
}
因为在其他地方用同样的方法有没有出现问题,但是这里老有问题,执行if (((TextBox)lstIDSNum.FindName(txtIDSNum)).Text.Trim() == null)时总提示
Object reference not set to an instance of an object,我以为是控件的名称弄错了,用test1测试同样出错,不知为何,恳请高手指教。
for (int i = 0; i < tbl.Rows.Count; i++)
{
CheckBox ckbids= new CheckBox();
ckbids.Name = "ckbIDS" + i.ToString();
ckbids.Height = 20;
ckbids.HorizontalAlignment = HorizontalAlignment.Stretch;
ckbids.Content = tbl.Rows[i]["ids_name"].ToString();
this.listbox1.Items.Add(ckbids); TextBox txtIDSNum = new TextBox();
txtIDSNum.Name = "txtIDSNum" + i.ToString();
txtIDSNum.Width = 100;
txtIDSNum.Height = 20;
txtIDSNum.ToolTip = tbl.Rows[i]["ids_name"].ToString();
//txtIDSNum.Content = i.ToString();
this.listbox2.Items.Add(txtIDSNum);
}
在保存的时候,我试图通过选定的checkbox获取textbox的值,应为是很多个动态生成的,我用了findname方法,如下:
foreach (CheckBox ckb in listbox1.Items)
{
if (ckb.IsChecked == true)
{
string txtIDSNum ="txtIDSNum"+ ckb.Name.Replace("ckbIDS", "");
string test1 = ((TextBox)this.lstIDSNum.FindName("txtIDSNum2")).Text.Trim();
string test2 = ((TextBox)this.FindName(txtIDSNum)).Text.Trim();
if (((TextBox)lstIDSNum.FindName(txtIDSNum)).Text.Trim() == null)
{
msg.TipMsg("IDS的序号不能为空,请您输入!", "提示");
return;
}
idsNum++;
}
}
因为在其他地方用同样的方法有没有出现问题,但是这里老有问题,执行if (((TextBox)lstIDSNum.FindName(txtIDSNum)).Text.Trim() == null)时总提示
Object reference not set to an instance of an object,我以为是控件的名称弄错了,用test1测试同样出错,不知为何,恳请高手指教。
解决方案 »
- 麻烦帮我看下 这样调用存储过程对不??
- 有没有懂billboard的啊?我多给分
- 重开一贴再问
- 如何终止线程池里的线程?
- 如何让自己的应用程序只被执行一次??请指教!!!
- 高分请教:怎么样把wav的几个声音文件合起来,让c#顺畅的把它念完?
- 大家帮忙看一下一个C#操作数据库的代码
- 数据删除怎么不更新,很简单的程序,大家帮吗?:)谢谢了!!在线等!!!有原码!
- (100分):"Microsoft.Vsa.Hosting"这个引用是怎么加到c#中的,在哪个.dll中(急用)???
- 怎么调用Lims系统中的接口中的方法
- 水晶报表打印版面设置的问题,内有详细描述。
- 我用VS2008编写了一个COM组件不知道怎么给用户自动注册?
object obj=this.FindName(txtIDSNum);
TextBox txt=obj as TextBox;
string str=txt.Text;
结果就在最后一句出错了,但是我的text里面有值啊,却提示没有实例化,不知何故?
TextBox tb = LogicalTreeHelper.FindLogicalNode(this.listbox2, "txtIDSNum0") as TextBox;
Orstring test1 = FindChildByName<TextBox>(this.listbox2,"txtIDSNum0").Text.Trim();public T FindChildByName<T>(FrameworkElement parent, string name) where T : FrameworkElement
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
FrameworkElement child = VisualTreeHelper.GetChild(parent, i) as FrameworkElement;
if (child != null &&
child is T &&
string.Equals(name, child.Name))
return (T)child;
else
{
T childOfChild = FindChildByName<T>(child, name);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
Hope this helps