ロジックコードを記述する

ロジックコードを記述する

リスト2 (MainPage.xaml.vb)

Imports System.Xml.Linq
Imports System.IO
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports Microsoft.Phone.Controls

電話の発信、メールを送信する写真を撮るなど、ユーザーに一連の一般的なタスクを提供するクラスの含まれる、Microsoft.Phone.Task名前空間をインポートします。PhoneCallTaskを使用するため、この名前空間が必要です。
Imports Microsoft.Phone.Tasks

personalInfoクラス内に、文字列型の「氏名」、「電話」プロパティを定義しています。
Public Class personalInfo
  Property 氏名 As String
  Property 電話 As String
End Class

Partial Public Class MainPage
  Inherits PhoneApplicationPage

XML要素を表すXElementクラス型のメンバ変数、myDocとreadXmlを宣言しています。
  Dim myDoc As XElement
  Dim readXml As XElement

  ' Constructor
  Public Sub New()
    InitializeComponent()
  
    ' Set the data context of the listbox control to the sample data
    DataContext = App.ViewModel
  End Sub
 
  ' Load data for the ViewModel Items

ページが読み込まれた時の処理

サーバーからperonalInfo.xmlを読み込み、その内容を表示するDownLoadXmlDataプロシージャを実行します。
  Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
    DownloadXmlData()
  End Sub

[OK]ボタンがクリックされた時の処理。

「氏名」や「電話」が未入力の場合は、警告メッセージを表示するErrorMessageプロシージャを実行します。
新しいWebClientのインスタンスmyWebClientオブジェクトを生成します。WebClientクラスは、データの送受信用のメソッドを提供するクラスです。
String またはUriとして指定したリソースをダウンロードする、DownloadStringAsyncメソッドで、サーバー上のpersonalInfo.xmlをダウンロードします。キャッシュから読み込まないように、常に新しいデータを読み込むよう、引数に現在の時間、分、秒を指定しています。
「サーバーのURI」には読者の利用しているサーバーにTelephone_NET(ASP.NET)ファイルをアップし、IISの設定を行ってください。
AddHandlerステートメントで、非同期のリソース ダウンロード操作の完了時に発生する、DwonloadStringCompletedイベントに、イベントハンドラを追加します。イベントハンドラ内では以下の処理を実行します。
XElement.Parseメソッドでダウンロードした結果を読み込みます。読み込んだ結果はmyDocメンバ変数に格納されます。
<情報>要素を生成し、子要素として<氏名>要素を生成し、内容テキストにnameTextBoxの値を指定します。次に<電話>要素を生成し、内容テキストにtelTextBoxの値を指定します。生成したXMLをAddメソッドでmyDocに追加します。

  Private Sub okButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles okButton.Click
 
    ErrorMessage()
    Dim myWebClient As New WebClient
 
    AddHandler myWebClient.DownloadStringCompleted, Sub(resultSender As Object, resultArgs As DownloadStringCompletedEventArgs)
                 If resultArgs.Error Is Nothing = False Then
                             MessageBox.Show("XMLファイルが見つかりません")
                             Exit Sub
                 Else
                   myDoc = XElement.Parse(resultArgs.Result)
                   readXml = New XElement("情報",
                             New XElement("氏名", nameTextBox.Text),
                             New XElement("電話", telTextBox.Text))
                       myDoc.Add(readXml)
                   End If
            End Sub
 
    myWebClient.DownloadStringAsync(New Uri(String.Format("サーバーのURI/Telephone_NET/SaveData/personalInfo.xml?myTime={0}", DateTime.Now.ToLongTimeString), UriKind.Absolute))
  End Sub

[保存]ボタンがクリックされた時の処理

「氏名」や「電話」が未入力の場合は、警告メッセージを表示するErrorMessageプロシージャを実行します。
生成したXMLを変数saveXmlDataに格納しておきます。
新しいWebClientのインスタンスmyWebClientオブジェクトを生成します。WebClientクラスは、データの送受信用のメソッドを提供するクラスです。
EncodingプロパティにUTF8を指定し、HeadersのContent-Typeに”text/xml;charset=utf-8”と指定します。
UploadStringAsyncメソッドで、生成したXML(saveXmlDataの値)をサーバーにアップロードし、サーバー上のDefault.aspx(後ほど作成方法を解説)を実行します。アップするサーバーのURIは各自のURIに変更してください。UploadStringAsyncメソッドは、指定したリソースに指定した文字列(この場合、生成したXMLデータ)をアップロードします。引数に現在の時間、分、秒を指定し、常に新しいデータをアップロードします。
AddHanderステートメントで、非同期の文字列アップロード操作の完了時に発生する、UploadStringCompletedイベントに、イベントハンドラを追加します。イベントハンドラ内では、保存した旨のメッセージを表示し、サーバーからperonalInfo.xmlを読み込み、その内容を表示するDownLoadXmlDataプロシージャを実行します。[保存]ボタンの選択を不可とします。
※サーバーに配置した、Telephone_NETのASP.NETファイルのアクセス許可やIISの設定等については、各自が行ってください。

  Private Sub saveButton_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles saveButton.Click
 
    ErrorMessage()
 
      Dim saveXmlData As String
      saveXmlData = myDoc.ToString
        Dim myWebClient As New WebClient
      With myWebClient
          .Encoding = System.Text.Encoding.UTF8
          .Headers("content-type") = "text/xml; charset=utf-8"
      End With
 
      AddHandler myWebClient.UploadStringCompleted, Sub(resultSender As Object, resultArgs As UploadStringCompletedEventArgs)
                 MessageBox.Show("保存しました")
                 DownloadXmlData()
      End Sub
 
      myWebClient.UploadStringAsync(New Uri(String.Format("サーバーのURI/Telephone_NET/Default.aspx?myTime={0}", DateTime.Now.ToLongTimeString), UriKind.Absolute), saveXmlData)
      nameTextBox.Text = String.Empty
      telTextBox.Text = String.Empty
      okButton.IsEnabled = True
      saveButton.IsEnabled = False
  End Sub

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30