在C#中我用Clipboard.Clear(),清空了剪貼板,可是我復(fù)制幾次之后,剪貼板上的內(nèi)容也會復(fù)制好幾次呢。求教,多謝!
private void button2_Click(object sender, EventArgs e)
{
Clipboard.Clear();
for (int i = 0; i < listBox1.Items.Count; i++)
{
s += listBox1.Items[i].ToString() + '\n';
}
try
{
Clipboard.SetDataObject(s, true, 1, 9999);
}
catch (Exception ex)
{
MessageBox.Show("出錯了:{0}",ex.Message);
}
finally { MessageBox.Show("已復(fù)制!"); }
回答一、把你的s聲明放到方法里面去,我的理解是s沒有釋放,所以上次復(fù)制的內(nèi)容會殘留在s中,所以你在復(fù)制時,s的變量執(zhí)行的是上次的數(shù)據(jù)+你復(fù)制的數(shù)據(jù),因此你的復(fù)制結(jié)果是越來越多。而你雖然清空了剪貼板,但是兩次的數(shù)據(jù)又會重新被你放到了剪貼板中,因此出現(xiàn)了所說的現(xiàn)象。
回答二、同意樓上,而且你把s的釋放動作和剪切版清空的動作放到finally里面最好。
上面的回答沒有測試過,不過我是把Clipboard.SetDataObject(s, false);冒似就不會出現(xiàn)剪貼內(nèi)容重復(fù)的問題了。