listbox怎么才能显示滚动条?
.net中想做一个类似于qq好友列表的效果for(inti=0;i<11;i++){pannelpannel=newpannel();pannel.location=ne...
.net中想做一个类似于qq好友列表的效果
for (int i = 0; i < 11; i++)
{
pannel pannel=new pannel();
pannel.location=new point(0,i*50);
listBox1.Controls.Add(pannel1);
}
如此添加后,listbox怎么才能显示滚动条? 展开
for (int i = 0; i < 11; i++)
{
pannel pannel=new pannel();
pannel.location=new point(0,i*50);
listBox1.Controls.Add(pannel1);
}
如此添加后,listbox怎么才能显示滚动条? 展开
3个回答
2013-06-19
展开全部
在对话框的oninitdialog中对于listbox添加完项目后,调用下面的函数即可以了。
SetListboxHorz(m_yourlistbox);
int SetListboxHorz( CListBox &listbox )
{
CString Name;
CSize Size;
CDC * DeviceContent = 0;
long Width = 0;
long Count = 0;
Count = listbox.GetCount();
if ( Count )
{
DeviceContent = listbox.GetDC();
for ( long Index = 0; Index < Count; Index++ )
{
listbox.GetText( Index, Name );
Size = DeviceContent-> GetTextExtent( Name );
if ( Size.cx > Width )
Width = Size.cx;
}
listbox.ReleaseDC( DeviceContent );
}
listbox.SetHorizontalExtent( Width );
return TRUE;
} 或者:CPaintDC dc(this);
CSize sz;
int max_width=0;
m_listbox.AddString( "xxxxx ");
sz=dc.GetTextExtent( "xxxxx ");
if(max_width <sz.cx)
max_width=sz.cx;
m_listbox.SendMessage(LB_SETHORIZONTALEXTENT,max_width,0);
SetListboxHorz(m_yourlistbox);
int SetListboxHorz( CListBox &listbox )
{
CString Name;
CSize Size;
CDC * DeviceContent = 0;
long Width = 0;
long Count = 0;
Count = listbox.GetCount();
if ( Count )
{
DeviceContent = listbox.GetDC();
for ( long Index = 0; Index < Count; Index++ )
{
listbox.GetText( Index, Name );
Size = DeviceContent-> GetTextExtent( Name );
if ( Size.cx > Width )
Width = Size.cx;
}
listbox.ReleaseDC( DeviceContent );
}
listbox.SetHorizontalExtent( Width );
return TRUE;
} 或者:CPaintDC dc(this);
CSize sz;
int max_width=0;
m_listbox.AddString( "xxxxx ");
sz=dc.GetTextExtent( "xxxxx ");
if(max_width <sz.cx)
max_width=sz.cx;
m_listbox.SendMessage(LB_SETHORIZONTALEXTENT,max_width,0);
2013-06-19
展开全部
从CListBox继承一个自己的类CMyListBox,然后重载AddString()
int CMyListBox::AddString(LPCTSTR lpszItem)
{
int iResult = CListBox::AddString(lpszItem);
this->SetCurSel(this->GetCount()-1);
return iResult;
}
然后你的listbox控件用CMylistbox
或者
设置 LVS_SHOWSELALWAYS 风格,始终选择刚添加的条目
m_ListCtrl.SetItemState(nIndex,LVIS_SELECTED,LVIS_SELECTED);
其中 nIndex 就是你刚插入 条目的索引。
然后:
m_ListCtrl.EnsureVisible(nIndex,TRUE);
还有一种方式,每次在listbox中添加数据不用addstring
用
insertstring(0,str);
也就是每次在listbox首部插入string。这样不滚动也可以显示最新的信息
int CMyListBox::AddString(LPCTSTR lpszItem)
{
int iResult = CListBox::AddString(lpszItem);
this->SetCurSel(this->GetCount()-1);
return iResult;
}
然后你的listbox控件用CMylistbox
或者
设置 LVS_SHOWSELALWAYS 风格,始终选择刚添加的条目
m_ListCtrl.SetItemState(nIndex,LVIS_SELECTED,LVIS_SELECTED);
其中 nIndex 就是你刚插入 条目的索引。
然后:
m_ListCtrl.EnsureVisible(nIndex,TRUE);
还有一种方式,每次在listbox中添加数据不用addstring
用
insertstring(0,str);
也就是每次在listbox首部插入string。这样不滚动也可以显示最新的信息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-19
展开全部
listbox1的ScrollAlwaysVisible属性设为True
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询