我目前正在创建一个侧面项目,用于在C#中使用DuplexChanneling处理双用户通信。
我的问题是实现这个非常简单但又乏味的方面 - 表达。
这是给我带来麻烦的代码:
Hashtable emotions;
void CreateEmotions()
{
emotions = new Hashtable(6);
emotions.Add(":)", ChattingClient.Properties.Resources.regular_smile);
emotions.Add(":(", ChattingClient.Properties.Resources.sad_smile);
}
void AddEmotions()
{
foreach (string emote in emotions.Keys)
{
while (TextBoxDisplay1.Text.Contains(emote))
{
int ind = TextBoxDisplay1.Text.IndexOf(emote);
TextBoxDisplay1.Select(ind, emote.Length);
Clipboard.SetImage((Image)emotions[emote]);
TextBoxDisplay1.Paste();
}
}
}
错误是因为
Clipboard.SetImage((Image)emotions[emote]);
它陈述了两个:
错误1'System.Windows.Clipboard.SetImage(System.Windows.Media.Imaging.BitmapSource)'的最佳重载方法匹配有一些无效的参数
和
错误2参数1:无法从'System.Windows.Controls.Image'转换为'System.Windows.Media.Imaging.BitmapSource'C:\ Users \ StandardGuy \ Desktop \ ChattingApplication \ ChattingClient \ ChattingClient \ MainWindow.xaml .cs 68 41 ChattingClient
答案 0 :(得分:1)
Hashtable emotions;
void CreateEmotions()
{
emotions = new Hashtable(6);
emotions.Add(":)", new BitmapImage(new Uri("/Resources/name_of_picture1.png", UriKind.Relative)));
emotions.Add(":(", new BitmapImage(new Uri("/Resources/name_of_picture2.png", UriKind.Relative)));
}
void AddEmotions()
{
foreach (string emote in emotions.Keys)
{
while (TextBoxDisplay1.Text.Contains(emote))
{
int ind = TextBoxDisplay1.Text.IndexOf(emote);
TextBoxDisplay1.Select(ind, emote.Length);
Clipboard.SetImage((BitmapImage)emotions[emote]);
TextBoxDisplay1.Paste();
}
}
}
希望这有帮助!