Apologies if I have misunderstoood the question, but from the sounds of it, what's happening is that when you change the value in the Listbox, this causes a postback which in turn is running the code you use to populate the listbox initially. (I assume that you are doing this in code-behind since I don't see anything in your markup that is specifying the Items in the list)
So given this markup:
<asp:ListBox ID="Listbox1" runat="server" AutoPostBack="True"
onselectedindexchanged="lstArtiesten_SelectedIndexChanged"></asp:ListBox>
<asp:TextBox runat="server" id="txtArtName"></asp:TextBox>
your code-behind should look something like this:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//only call initialise during initial page load.
initialise();
}
}
protected void initialise()
{
//add some items to the list
Listbox1.Items.Add("Something1");
Listbox1.Items.Add("Something2");
Listbox1.Items.Add("Something3");
Listbox1.Items.Add("Something4");
Listbox1.SelectedIndex = 0; //select the first item in the list, or whatever
}
protected void lstArtiesten_SelectedIndexChanged(object sender, EventArgs e)
{
txtArtName.Text = Listbox1.SelectedItem.Text;
}
Note how the initialise method is only called if we're not in Postback -i.e the initial page load. By checking for that state and not re-loading the Listbox, we allow ViewState to work it's [terrible, dark, evil] magic and restore the selection you made on the Listbox control.
Hope that helps.