【问题标题】:XmlNode AppendChild works in C# but not VB.NetXmlNode AppendChild 适用于 C# 但不适用于 VB.Net
【发布时间】:2019-01-22 03:41:31
【问题描述】:

我在 vb.net 中不断遇到以下错误消息,但在用 C# 完成的同一个项目中,这非常有效。手动将项目从 C# 转换为 VB 后,出现错误。任何建议将不胜感激。

Vb.Net:

Const App_ID As String = "WindowsToastTest"
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)


    ' Get a toast XML template
    Dim toastXml As XmlDocument = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText03)

    ' Fill in the text elements

    Dim stringElements As XmlNodeList = toastXml.GetElementsByTagName("text")
    For i As Integer = 0 To stringElements.Length
        stringElements(i).AppendChild(toastXml.CreateTextNode("Line " + i))
    Next

    ' Specify the absolute path to an image
    Dim imagePath As String = "file:///" + Path.GetFullPath("toastImageAndText.png")
    Dim imageElements As XmlNodeList = toastXml.GetElementsByTagName("image")
    imageElements(0).Attributes.GetNamedItem("src").NodeValue = imagePath

    ' Create the toast And attach event listeners
    Dim toast As ToastNotification = New ToastNotification(toastXml)

    ' Show the toast. Be sure to specify the AppUserModelId on your application's shortcut!
    ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast)



End Sub

C#:

namespace ToastSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    private const String APP_ID = "ToastSample";
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        // Get a toast XML template
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText03);

        // Fill in the text elements
        XmlNodeList stringElements = toastXml.GetElementsByTagName("text");
        for (int i = 0; i < stringElements.Length; i++)
        {
            stringElements[i].AppendChild(toastXml.CreateTextNode("Line " + i));
        }

        // Specify the absolute path to an image
        String imagePath = "file:///" + Path.GetFullPath("toastImageAndText.png");
        XmlNodeList imageElements = toastXml.GetElementsByTagName("image");
        imageElements[0].Attributes.GetNamedItem("src").NodeValue = imagePath;

        // Create the toast and attach event listeners
        ToastNotification toast = new ToastNotification(toastXml);

        // Show the toast. Be sure to specify the AppUserModelId on your application's shortcut!
        ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);
    }

}
}

【问题讨论】:

    标签: c# vb.net exception


    【解决方案1】:

    问题不在于 XML,而在于您的字符串连接。 Concat strings by & and + in VB.Net 当您在 vb 中使用 string + number 时,它会尝试将字符串转换为数字,这就是为什么您会收到错误消息“从字符串“Line”转换为类型“Double”无效”。而是使用 &:

    stringElements(i).AppendChild(toastXml.CreateTextNode("Line " & i))
    

    希望对您有所帮助。

    【讨论】:

    • 哦,对了!很好,总是小事不是吗?
    • 嘿,是的。假设它一定是复杂部分中的某些东西,你就会陷入困境!
    【解决方案2】:

    + 运算符因语言而异。

    要在 VB 中连接,请改用 &。

    Dim stringElements As XmlNodeList = toastXml.GetElementsByTagName("text")
    For i As Integer = 0 To stringElements.Length
        stringElements(i).AppendChild(toastXml.CreateTextNode("Line " & i))
    Next
    

    【讨论】:

    • 谢谢!进行适当的连接后工作正常。
    猜你喜欢
    • 2015-09-10
    • 2012-08-04
    • 2013-08-24
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多