• ベストアンサー

WPFテンプレート作成時のエラー「iAddChild」ついて

AKARI0418の回答

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

<Ellipse> <Ellipse></Ellipse> </Ellipse> この記述は正しくありませんので、エラーになっています。 解決方法としては、 >Ellipse型を継承したクラスを自分で作成して、IAddChildインタフェースを 実装するということなのでしょうか。 は正しいです。 しかし、 そんなに面倒なことをすることはありません。 2重マルをかければよいということですので、 たとえば、 <Canvas> <Ellipse Canvas.ZIndex="0"></Ellipse> <Ellipse Canvas.ZIndex="1"></Ellipse> </Canvas> このようにすれば、Ellipseを重ねて表示することができます。 要するに、 パネル系の要素、すなわちIAddChildを実装している要素を、 親として持たせれば、円を重ねることを実現することができます。 ほかには、 InkPresenterを使用する方法があります。

noname#250976
質問者

お礼

ご回答ありがとうございます。 Canvasの子要素にEllipseを2つ追加することで、◎を描画できることを確認できました。 ZIndexプロパティの利用で子要素の順番を指定できるということも、初めて知りました。今後、有効に活用していきたいと思います。 他に紹介して頂いた方法についても、色々試してみて描画処理の手段の知識として身につけたいと思います。 困っていたところだったので、本当に助かりました。ありがとうございました!

関連するQ&A

  • 'dataType' 引数を Null にすること

    VB.NETで開発をしています。 配列をテーブルに変換するにあたって、新規作成すると、問題なく成功するのですが、 作成中のシステムに組み込みをしますと、Type.GetType("system.stirng")で、「'dataType'引数をNullにすることはできません。」と、エラーが発生します。 原因は、Type.GetType("system.stirng")の結果が、「Nothing」になってしまうからです。 いろいろと試してみましたが、状況が一向に改善されません。 新規作成した方は、「{Name = "String"FullName="System,String"}」と、入っています。 下記を、システムに設置すると、エラーになります。 Dim s1() As String = New String() {"a", "b", "c", "d"} Dim dt As DataTable Dim t_data As Object dt = New DataTable t_data = Type.GetType("system.stirng") dt.Columns.Add("kname", t_data) 以上、宜しくお願い致します。 環境は、Visual Studio 2012です。

  • VB2008 Formを関数の引数にする

    お世話になります VB2008で開発をしています Formを2つ作成し どちらも同じ名称のテキストBOX(TextBox1)コントロールを貼り付けています Publicの関数でそれぞれのFormに値をセットしたいのですが 「'TextBox1' は 'System.Windows.Forms.Form' のメンバではありません。」 とエラーが発生してしまいます 初歩的な質問で申し訳ありませんが ご助言頂けると助かります 宜しくお願い致します ソース: --------------------------------------------------- Module Module1 Public Sub Main() Dim Form1 As New Form1 Dim Form2 As New Form2 SetValue(Form1) SetValue(form2) End Sub Private Sub SetValue(ByVal obj As Form) obj.TextBox1 = "TEST" End Sub End Module ---------------------------------------------------

  • VBでXMLファイルを作成していますが、エラーになります

    すみません、教えてください。 VB6でXMLファイルを作成しています。コメントを入れようとすると"!--"の文字でこけます。どうしたらいいのでしょうか?コーディングは以下のようにしてます。 Dim xmlDoc As New MSXML2.DOMDocument40 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 garFNRpt = sFPass + "Sousinfile\DATA\" + sFilemei + ".xml" 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, """!--""kml基本情報", "")) よろしくお願いします

  • VB6でXMLを作成しているのですがエラーが出ます

    VB6でXML作成のプログラムを作ったのですが、読み取り専用のノードを編集しようとしましたのメッセージボックスが表示されます。 どなたかどこが悪いのか、ご教授願います。 ソースコードは以下の通りです。 Dim xmlDoc As MSXML.DOMDocument 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 Dim attr As MSXML.IXMLDOMAttribute '属性 Dim newText Set xmlDoc = New MSXML.DOMDocument 'XMLドキュメントを作成します。 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) '<ClinicalDocument>要素を追加します。 Set node(1) = xmlDoc.createElement("ClinicalDocument") Call xmlDoc.appendChild(node(1)) 'xmlns:xsi属性を追加します。 Set attr = xmlDoc.createAttribute("xmlns:xsi") Call node(1).Attributes.setNamedItem(attr) attr.nodeValue = "http://www.w3.org/2001/XMLSchema-instance" ''ここでエラーが出ます '<Customer>要素を追加します。 Set node(2) = xmlDoc.createElement("Customer") Call node(1).appendChild(node(2)) Call node(2).appendChild(xmlDoc.createTextNode(vbNewLine)) 'id属性を追加します。 Set attr = xmlDoc.createAttribute("id") Call node(2).Attributes.setNamedItem(attr) attr.nodeValue = "1" '<Name>要素を追加します。 Set node(3) = xmlDoc.createElement("Name") Call node(2).appendChild(node(3)) Set newText = xmlDoc.createTextNode("Jhon") Call node(3).appendChild(newText) 'XMLドキュメントの出力 xmlDoc.save (App.Path & "\customer.xml")

  • [VB.NET]クラスのシリアライズでエラーが発生

    プログラムを作っていて設定を保存するためのクラスを作ったのですが原因不明のエラーが出てきてしまいます。 Public Class cde_config Const CONFIG_FILE As String = "config.xml" Public FolderName As String Public exex As New ArrayList Public Sub New() If File.Exists(CONFIG_FILE) Then Dim serializer As XmlSerializer = New XmlSerializer(GetType(cde_config)) Dim stream As FileStream = New FileStream(CONFIG_FILE, FileMode.Open) Try Me.FolderName = CType(serializer.Deserialize(stream), cde_config).FolderName 'ここでエラーが発生 Me.exex = CType(serializer.Deserialize(stream), cde_config).exex Finally stream.Close() End Try Else FolderName = "略" exex.Add(New String("略")) End If End Sub Public Sub save() Dim serializer As XmlSerializer = New XmlSerializer(GetType(cde_config)) Dim stream As FileStream = New FileStream(CONFIG_FILE, FileMode.Create) Try serializer.Serialize(stream, Me) Finally stream.Close() End Try End Sub End Class エラーの内容は 'System.InvalidOperationException' のハンドルされていない例外が system.xml.dll で発生しました。 追加情報 : XML ドキュメント (2,2) でエラーが発生しました。 です。 どこに問題があるのでしょうか。

  • VB2005 CSVファイルをテーブルへインポート

    こんばんは。 VB2005にてCSVファイルをテーブルへ、インポートする処理を作成しています。ネットで調べたコードを試しています。デバックは通るのですが、処理結果がテーブルへ出力されません。 (TESTdataset内にTable1を作成しています。) 何か解決案がありましたらご教示をお願いいたします。 また、 ※1の'DataGridView1の文なのですが、コメントを外すと 宣言がされていない旨のメッセージが出てきてしまいます。 もし此方も解決案が御座いましたらご教示をお願いいたします。 -------------------------------------------------------------- 以下コードです -------------------------------------------------------------- Imports System.Data Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Const csvPath As String = "c:\DB\" Const csvFile As String = "TEST.csv" Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & csvPath _ & ";" & "Extended Properties='text;FMT=Delimited'" Dim objConn As New OleDbConnection(sConnectionString) objConn.Open() Dim objCmdSelect As New OleDbCommand("SELECT * FROM " & csvFile, objConn) Dim objAdapter1 As New OleDbDataAdapter() objAdapter1.SelectCommand = objCmdSelect Dim objDataset1 As New DataSet() Dim objTable As DataTable Dim Col As DataColumn objDataset1 = New DataSet("TEST") objTable = New DataTable("Table1") Col = New DataColumn("No") Col.DataType = Type.GetType("System.Int16") objTable.Columns.Add(Col) Col = New DataColumn("Name") Col.DataType = Type.GetType("System.String") objTable.Columns.Add(Col) Col = New DataColumn("出身") Col.DataType = Type.GetType("System.String") objTable.Columns.Add(Col) objDataset1.Tables.Add(objTable) objAdapter1.Fill(objDataset1.Tables(0)) ※1'DataGridView1.DataSource = objDataset1.Tables(0).DefaultView objConn.Close() End Sub End Class --------------------------------------------------------- ※お礼が遅れる場合がありますが、必ずしますので、その時は少々お待ちください。

  • すでにファイルが開かれている時のエラー回避

    VB2010で、ファイルを開いていると下記のコードでエラーがでます。 Dim SR As New System.IO.StreamReader(AppPath & "諸元一覧.csv", System.Text.Encoding.Default) 「諸元一覧.csv」ファイルを閉じてください。 とメッセージを出し、ExitSubしたいのですが、 どういうコードにすればよいのでしょうか。 教えてください。よろしくお願いいたします。

  • SQLServerデータをDataGridに表示時にエラーが発生

    SQLServerデータをDataGridに表示時にエラーが発生 visual Studio2008を使用し、SQLServerから条件を指定しそれをDataGridに一覧表示するvbを組んでいますが、エラーが解消しなく困っております。対応方法について教えてください。 【状況】 1 Dim St As String 2 Dim Cn As New System.Data.SqlClient.SqlConnection 3 Dim SQL As System.Data.SqlClient.SqlCommand 4 Dim ServerName As String = "Server名"  5 Dim UserID As String = "id" 6 Dim Password As String = "×××" 7 Dim DatabaseName As String = "Dbname" 8 Dim Adapter As New SqlClient.SqlDataAdapter(SQL, Cn) 9 Dim table As New DataTable 10 St = "Server=" & ServerName & ";" 11 St &= "User ID=" & UserID & ";" 12 St &= "Password=" & Password & ";" 13 St &= "Initial Catalog=" & DatabaseName 14 Cn.Open() 15 Cn.ConnectionString = St 16 SQL = Cn.CreateCommand 17 SQL.CommandText = ("SELECT * FROM CUSTOMER_M WHERE CUSTOMER_NAME LIKE " & "'%' & TextBoxName.Text & '%'") 18 Adapter.Fill(table) 19 DataGrid1.DataSource = table 20 Cn.Close() 21 SQL.Dispose() 22 Cn.Dispose() 8行目の「Adapter」がエラーになり、オーバーロードの解決に失敗しましたとメッセージが出ています。8行目の(SQl、Cn)を省くとコンパイルエラーはなくなりますが、14行目でエラーになります。 宜しくお願いします。

  • Gridに日付を入れるとき

    Gridに「2006/05/10 13:00:00」と表示させたいのですが、「2006/05/10」と表示されてしまいます。 ------------------------------------------------ Dim dt As DataTable Dim dtSet As New DataSet dt = dtSet.Tables.Add("aaa") dt.Columns.Add("日付", Type.GetType("System.DateTime")) dt.Rows.Add(New Object() {"2006/05/10 14:00:00"}) DataGrid1.DataSource = dt ------------------------------------------------ ソースが間違っているのでしょうか。どなたかアドバイスをお願いします。

  • VB2005でエクセルファイル作成時のエラー

    現在、VB2005ExpressEditionを使って、データグリッドビューに表示されている値を、エクセル出力するアプリを作成しています。 デバッグでは問題がなかったので、ビルドをし、出来上がった実行ファイルをデスクトップなどに移動させ、そこからアプリを起動したところ、エクセル出力のところでプログラムが異常終了してしまいました。 Releaseフォルダから直接実行ファイルを動かした場合は、正常に動作しました。 そこで、try~catchを使ってエラー箇所を判別しようとしたところ、処理開始以前の宣言のところで、エラーが発生しているようなんです。 以下がその宣言部です。 Dim app As New Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet VBでのエクセルファイル出力はこれが初めてで、VB自体も独学で勉強しているため、かなり的外れな質問になってしまっているかもしれませんが、どうしてもわからないので、どうか教えて下さい。 長文、乱文で失礼いたしました。