1

System.Windows と Microsoft.LightSwitch.Threading を追加しました。クリップボードにアクセスします。

このプログラムを実行すると、次のエラーが表示されます: 無効なクロススレッド アクセスです。

クリップボードを機能させるためのアイデアはありますか?

        partial void btnCopyFaucets_Execute()
    {
        // Write your code here.
        try
        {
            string CopyText, nManu, nProductCode, nFaucet;
            Faucets cpyfaucet = this.FaucetsSearch.SelectedItem;

            nManu = Convert.ToString(cpyfaucet.Manufacturer);
            nProductCode = Convert.ToString(cpyfaucet.ProductCode);
            nFaucet = Convert.ToString(cpyfaucet.Faucet);

            CopyText = nManu + " " + nProductCode + " " + nFaucet;

            // THIS IS WHERE THE COMPILER IS NOT HAPPY.
            Clipboard.SetText(CopyText);
        }
        catch (Exception damnit)
        {
            MessageBox.Show(damnit.Message);
        }
    }
4

1 に答える 1

3

次のように Main ディスパッチャーを使用してみてください。

Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(() =>
 Clipboard.SetText(CopyText);
});

多分それがウェブアプリなら、その後パーミッションの問題が発生するでしょう。

于 2012-07-23T11:30:21.307 に答える