[英]How to delete selected item of listbox after click a button?
單擊按鈕后嘗試刪除列表框的選定項目。但失敗了。
此代碼有什么問題?
刪除功能
public void RemoveFromList()
{
int c = listNotMatchedItems.Items.Count - 1;
for (int i = c; i >= 0; i++)
{
listNotMatchedItems.Items.RemoveAt(i);
}
}
點擊按鈕
private void AddToAnotherList_Click(object sender, EventArgs e)
{
//Add to another list.some codes....
RemoveFromList();
}
問題:您的函數RemoveFromList()
從ListBox中刪除所有項目。
解決方案:如果只想刪除選定的項目,則使用ListBox1.SelectedIndex
獲取選定的項目索引,並將其傳遞給ListBox1.Items.RemoveAt()
方法。
嘗試這個:
private void AddToAnotherList_Click(object sender, EventArgs e)
{
//Add to another list.some codes....
listNotMatchedItems.Items.RemoveAt(listNotMatchedItems.SelectedIndex);
}
編輯:在您的listNotMatchedItems_SelectedIndexChanged
事件處理程序中
替換為:
string table = listNotMatchedItems.SelectedItem.ToString();
有了這個:
private void listNotMatchedItems_SelectedIndexChanged(object sender, EventArgs e)
{
string table =String.Empty;
if(listNotMatchedItems.SelectedItems.Count>0)
{
using (SqlConnection con = new SqlConnection(strConnectDB1))
{
con.Open();
using (SqlCommand comQuery = new SqlCommand(@" declare @vsSQL varchar(8000)
declare @vsTableName varchar(50)
select @vsTableName = @TT
select @vsSQL = 'CREATE TABLE ' + @vsTableName + char(10) + '(' + char(10)
select @vsSQL = @vsSQL + ' ' + sc.Name + ' ' +
st.Name +
case when st.Name in ('varchar','varchar','char','nchar') then '(' + cast(sc.Length as varchar) + ') ' else ' ' end +
case when sc.IsNullable = 1 then 'NULL' else 'NOT NULL' end + ',' + char(10)
from sysobjects so
join syscolumns sc on sc.id = so.id
join systypes st on st.xusertype = sc.xusertype
where so.name = @vsTableName
order by
sc.ColID
select substring(@vsSQL,1,len(@vsSQL) - 2) + char(10) + ')'", con))
{
comQuery.Parameters.AddWithValue("@TT", listNotMatchedItems.SelectedItem);
using (SqlDataReader readerQuery = comQuery.ExecuteReader())
{
txtNotMachedQuery.Text = "";
int a = 0;
while (readerQuery.Read())
{
a++;
txtNotMachedQuery.Text = readerQuery[0].ToString() ;
}
}
}
using (SqlCommand com = new SqlCommand(@"SELECT * FROM " + table, con))
{
using (SqlDataReader reader = com.ExecuteReader(CommandBehavior.SchemaOnly))
{
listNotMachedFields.Items.Clear();
DataTable schemaTable = reader.GetSchemaTable();
foreach (DataRow colRow in schemaTable.Rows)
listNotMachedFields.Items.Add(colRow.Field<String>("ColumnName"));
}
}
}
}//if end
}
編輯2:
替換為:
comQuery.Parameters.AddWithValue("@TT", listNotMatchedItems.SelectedItem);
有了這個:
comQuery.Parameters.AddWithValue("@TT", listNotMatchedItems.SelectedValue.ToString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.