2017-09-20 23 views
0

要素ホストを持つC#.Net 4.6にwinformがあります。これは、WPF RichTextBoxを含むユーザーコントロールをホストします。 RichTextBoxからテキストを取得して、winform /アプリケーションの別の場所で使用したいと考えています。私はそれを文字列として使用したいと思います。リッチテキストからテキストを取得wpfコントロールはC#のWinformsでelementhostでホストされています

私はこれを試しました。

var elementHost = this.elementHost1; 
var wpfTextBox = (System.Windows.Controls.RichTextBox)elementHost.Child; 
string richText = new TextRange(wpfTextBox.Document.ContentStart, wpfTextBox.Document.ContentEnd).Text; 

textBox1.Text = richText.ToString(); 

このエラーは2行目で失敗します。 System.Windows.Controls.RichTextBox ' を入力するための 'SyncfusionWindowsFormsApplication3.UserControl1

'タイプ のオブジェクトをキャストできません''。'

elementHost1でホストされているUserControl1内のRichtextBoxからテキストを取得するにはどうすればよいですか?

リッチテキストボックスを含むusercontrolのUPDATE - XAML。

<UserControl x:Class="SyncfusionWindowsFormsApplication3.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup- compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:SyncfusionWindowsFormsApplication3" 
      mc:Ignorable="d" Width="1093.598" Height="423.11"> 
    <RichTextBox HorizontalAlignment="Left" Height="404" Margin="14,9,0,0" VerticalAlignment="Top" Width="1070" FontFamily="Arial" FontSize="16" SpellCheck.IsEnabled="True" BorderBrush="Black" BorderThickness="3" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" TextChanged="RichTextBox_TextChanged"> 
     <FlowDocument> 
      <Paragraph> 
       <Run Text="RichTextBox"/> 
      </Paragraph> 
     </FlowDocument> 
    </RichTextBox> 
</UserControl> 
+0

「これは、WPF RichTextBoxを含むユーザーコントロールをホストしています。関連性のあるxamlコードの一部を表示できますか? –

+0

elementHostは、RichTextBoxを含むUserControl1をホストします。 winformでWPFコントロールをホストする唯一の方法はUserControl経由であると思ったのですか? –

答えて

0

実行時にwinformで要素ホストを作成することで問題を解決しました。私はフォーム上で次のように宣言した。

public ElementHost host = new ElementHost(); 
    public System.Windows.Controls.RichTextBox wpfRichText = new System.Windows.Controls.RichTextBox(); 

次に、wpfRichTextをホストの子として追加しました。

フォームには、次のようなボタンがありました。

string richText = new TextRange(wpfRichText.Document.ContentStart, wpfRichText.Document.ContentEnd).Text; 
     textBox1.Text = richText; 

これは要素のホストでホストされているリッチテキストボックスからテキストを引っ張ると、テキストボックスに追加します(例として - 私は実際に他の目的のためのテキストを使用します)。

関連する問題