質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

3068閲覧

動的にツールチップを作成しデータw取得するとゴミがついてしまう

byori

総合スコア71

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2021/12/23 07:33

編集2023/08/15 18:45

メニューを動的に作成しツールチップを表示させようとしています。

Panel3Shoken_ItemClick() でデータを取得しようとするとSystem.Windows.Controls.ToolTip という文字列も取得されてしまいます。
どのようにとりのぞいたらいいですか?
「{System.Windows.Controls.ToolTip: Anisakiasis}」余分に「{System.Windows.Controls.ToolTip:  }」が付いてきます。

Windows 10 VS2019 C# WPF
イメージ説明

xaml

1 <Window.Resources> 2 : 3 <!-- ToolTip のテキストを Wrap して表示する --> 4 <Style TargetType="ToolTip" x:Key="ToolTipWrap"> 5 <Style.Resources> 6 <Style TargetType="ContentPresenter"> 7 <Style.Resources> 8 <Style TargetType="TextBlock"> 9 <Setter Property="TextWrapping" Value="Wrap" /> 10 </Style> 11 </Style.Resources> 12 </Style> 13 </Style.Resources> 14 <Setter Property="MaxWidth" Value="600" /> 15 <Setter Property="Background" Value="Bisque"/> 16 </Style> 17 </Window.Resources>

C#

1 // Tooltip のスタイル取得 2 var tooltipStyle = FindResource("ToolTipWrap"); 3 4 MenuItem panel3 = new MenuItem(); 5 6 string id = i.ToString() + k.ToString(); 7 if (shindan[j].Id == id) 8 { 9 panel3.Header = shindan[j].Title; 10 //panel3.ToolTip = shindan[j].Data; 11 12 ToolTip tooltip = new System.Windows.Controls.ToolTip(); 13 tooltip.Style = tooltipStyle as Style; 14 tooltip.Content = shindan[j].Data; 15 panel3.ToolTip = tooltip; <- 修正 16 17 panel3.Background = Brushes.Beige; 18 panel3.Click += Panel3_ItemClick; 19 //panel3.ToolTip..Background = Brushes.Beige; 20 panel2[k].Items.Add(panel3); 21 panel3 = null; 22 } 23 24 25 private void Panel3Shoken_ItemClick(object sender, RoutedEventArgs e) 26 { 27 MenuItem item = (MenuItem)sender; 28 29 : 30 textEditor2.Text += item.ToolTip.ToString(); 31 : 32 } 33 } 34
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2021/12/23 08:26

よくわかりませんが item.ToolTip.ToString(); としてるので、型名がついてきてるんじゃないですか? item.ToolTip.Content.ToString(); にするとどうなりますか?
guest

回答1

0

ベストアンサー

MenuItem.ToolTipプロパティはobjectのため、ToolTipクラスを入れた場合はキャストがいります。
FrameworkElement.ToolTip プロパティ (System.Windows) | Microsoft Docs

shindan[j].Dataがなんだかわかりませんが、今Anisakiasisと出てるんだったら、↓でいいはずです。

cs

1textEditor2.Text += ((ToolTip)item.ToolTip).Content.ToString();

xml

1<Window 2 x:Class="Questions375250.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="800" 6 Height="450"> 7 <Window.Resources> 8 <Style TargetType="ToolTip"> 9 <Style.Resources> 10 <Style TargetType="ContentPresenter"> 11 <Style.Resources> 12 <Style TargetType="TextBlock"> 13 <Setter Property="TextWrapping" Value="Wrap" /> 14 </Style> 15 </Style.Resources> 16 </Style> 17 </Style.Resources> 18 <Setter Property="MaxWidth" Value="600" /> 19 <Setter Property="Background" Value="Bisque" /> 20 </Style> 21 </Window.Resources> 22 23 <DockPanel> 24 <Menu x:Name="menu" DockPanel.Dock="Top"> 25 <MenuItem 26 Click="FileMenuItem_Click" 27 Header="ファイル(_F)" 28 ToolTip="ファイル - つーるちっぷ" /> 29 </Menu> 30 <TextBox x:Name="textBox" /> 31 </DockPanel> 32</Window>

cs

1using System.Windows; 2using System.Windows.Controls; 3using System.Windows.Media; 4 5namespace Questions375250 6{ 7 public partial class MainWindow : Window 8 { 9 public MainWindow() 10 { 11 InitializeComponent(); 12 13 var editMenuItem = new MenuItem 14 { 15 Background = Brushes.Beige, 16 Header = "編集(_E)", 17 ToolTip = new ToolTip { Content = "編集 - つーるちっぷ", }, 18 }; 19 editMenuItem.Click += EditMenuItem_Click; 20 menu.Items.Add(editMenuItem); 21 22 var viewMenuItem = new MenuItem 23 { 24 Background = Brushes.Beige, 25 Header = "表示(_V)", 26 ToolTip = new ToolTip { Content = "表示 - つーるちっぷ", }, 27 }; 28 viewMenuItem.Click += ViewMenuItem_Click; 29 menu.Items.Add(viewMenuItem); 30 } 31 32 private void FileMenuItem_Click(object sender, RoutedEventArgs e) 33 { 34 var item = (MenuItem)sender; 35 36 // ファイルMenuItemはToolTipプロパティに直接文字列だから、item.ToolTipは文字列 37 textBox.Text += item.ToolTip.ToString(); // ファイル - つーるちっぷ 38 textBox.Text += "\n"; 39 } 40 41 private void EditMenuItem_Click(object sender, RoutedEventArgs e) 42 { 43 var item = (MenuItem)sender; 44 45 // 編集MenuItemはToolTipプロパティにToolTipクラスが入っているから、item.ToolTipはToolTipクラス 46 // ToStringすると型名が出る 47 textBox.Text += item.ToolTip.ToString(); // System.Windows.Controls.ToolTip: 編集 - つーるちっぷ 48 textBox.Text += "\n"; 49 } 50 51 private void ViewMenuItem_Click(object sender, RoutedEventArgs e) 52 { 53 var item = (MenuItem)sender; 54 55 // 表示MenuItemはToolTipプロパティにToolTipクラスが入っているから、item.ToolTipはToolTipクラス 56 // キャストしてContentで取り出せる 57 textBox.Text += ((ToolTip)item.ToolTip).Content.ToString(); // 表示 - つーるちっぷ 58 textBox.Text += "\n"; 59 } 60 } 61}

アプリ画像

投稿2021/12/23 13:44

編集2023/08/15 09:45
TN8001

総合スコア9244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

byori

2021/12/23 22:43

TN8001 様、いつもお世話になります。 > ((ToolTip)item.ToolTip).Content.ToString(); まさに、おっしゃる通りで型名(?)を取り除く方法がわかりませんでした。 画像の添付を忘れ説明不足の中、的確な回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問