求助:问一个很菜的问题!(困了我一下午了):ListItem.add()和List.remove()

hslcomputer 2004-08-11 03:38:24
我的程序很简单:
在页面放置三个ListBox框,ListBox1的Items中设置了项.
在 Page_Load 中:
ListBOx2.DataSource=ListBOx1.items;
ListBOx2.DataBind();
页面还有两个按扭:是用来将ListBox2中的项移入和移回ListBOx3中:
Button1.Click()中代码:
ListBox3.SelectIndex=-1;
ListBox3.Add(ListBox2.SelectedItem);
ListBox2.Remove(ListBox2.SelectedItem);

运行错误如下:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 246: {
行 247: listBox1.SelectedIndex=-1;
行 248: listBox1.Items.Add(lstZiduan.SelectedItem);
行 249: lstZiduan.Items.Remove(lstZiduan.SelectedItem);
行 250: }

...全文
183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
暗石绿 2004-08-11
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<script runat="server" language="C#">

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

// 给 ListBox2 和 ListBox3 赋值

if(!IsPostBack)
{
for(int i=0;i<4;i++)
{
ListBox2.Items.Add("ListBox2_"+i.ToString());
ListBox3.Items.Add("ListBox3_"+i.ToString());
}
}

this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);

}

// ListBox2 >> ListBox3
private void Button1_Click(object sender, System.EventArgs e)
{
if( ListBox2.SelectedItem != null)
{
ListItem tempItem = ListBox2.SelectedItem;
ListBox2.Items.Remove(tempItem);
ListBox3.Items.Add(tempItem);
ListBox3.SelectedIndex = -1;
}
}

// ListBox3 >> ListBox2
private void Button2_Click(object sender, System.EventArgs e)
{
if( ListBox3.SelectedItem != null)
{
ListItem tempItem = ListBox3.SelectedItem;
ListBox3.Items.Remove(tempItem);
ListBox2.Items.Add(tempItem);
ListBox2.SelectedIndex = -1;
}
}


</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:ListBox id="ListBox2" style="Z-INDEX: 101; LEFT: 88px; POSITION: absolute; TOP: 200px" runat="server"
Width="96px" Height="128px"></asp:ListBox>
<asp:ListBox id="ListBox3" style="Z-INDEX: 102; LEFT: 240px; POSITION: absolute; TOP: 200px"
runat="server" Width="96px" Height="120px"></asp:ListBox>
<asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 104px; POSITION: absolute; TOP: 152px" runat="server"
Text=" >> "></asp:Button>
<asp:Button id="Button2" style="Z-INDEX: 104; LEFT: 256px; POSITION: absolute; TOP: 152px" runat="server"
Text=" << "></asp:Button>
</form>
</body>
</HTML>
hslcomputer 2004-08-11
  • 打赏
  • 举报
回复
to alliat:
可是在页面我看到有数据啊在(ListBOx1中)
alliat 2004-08-11
  • 打赏
  • 举报
回复
我认为是这样的,你的数据是在页面LOAD时,绑定到LIST上去的,实际上LIST的ITEM为空,所以你去操作时会出错,正确的方法是,这种REMOVE和ADD就在前台用JAVASCRIPT完成,不必到后台去
暗石绿 2004-08-11
  • 打赏
  • 举报
回复
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

行 248: listBox1.Items.Add(lstZiduan.SelectedItem);


可以看出
lstZiduan.SelectedItem 是个空对象,即你的 ListBox 没有选中的项。

siugwan 2004-08-11
  • 打赏
  • 举报
回复
ListBox2.Remove(ListBox2.SelectedItem);
后加
ListBox2.SelectedIndex = -1;
试试
会不会是你的ListBox2.Remove后就没有Item了?
hslcomputer 2004-08-11
  • 打赏
  • 举报
回复
不是这个错误,这个错误编译时能发现,我这里写的不规则.
wxlada 2004-08-11
  • 打赏
  • 举报
回复
ListBOx2 ListBox2我总觉得你这些大小写中有问题。。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧