Попробуйте:
if (!IsPostBack)
{
btnHide.Attributes.Add("onmouseout", "this.style.backgroundColor='Blue';ListBox3.style.display='none'");
btnShow.Attributes.Add("onmouseover", "this.style.backgroundColor='Red';ListBox3.style.display='block'");
}
Свойство видимости работает немного иначе, чем свойство отображения. Когда для свойства видимости установлено значение «скрытый», элемент скрыт, но компоновка не изменяется, тогда как при установке для свойства отображения значения «нет» элемент полностью удаляется, что может повлиять на макет.
Если вы хотите изменить видимость списка без влияния на макет, вы можете использовать div в качестве оболочки и затем изменить его свойство видимости.
<div id="wrapper">
<asp:ListBox ID="ListBox3" runat="server"></asp:ListBox>
</div>
<asp:Button ID="btnShow" runat="server" Text="Button" />
<asp:Button ID="btnHide" runat="server" Text="Button" />
Измените ASPX, чтобы переключить свойство видимости элемента div, содержащего список.
if (!IsPostBack)
{
btnHide.Attributes.Add("onmouseout", "this.style.backgroundColor='Blue';wrapper.style.visibility='hidden'");
btnShow.Attributes.Add("onmouseover", "this.style.backgroundColor='Red'; wrapper.style.visibility='visible'");
}