0
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="storyboard.clear"
x:Name="Window"
Title="clear"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
    <Button x:Name="btn_a" Content="A" Height="56" Margin="208,149,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="75" Click="btn_a_Click" />
    <TextBox x:Name="txt_display" Height="50" Margin="208,57,252,0" TextWrapping="Wrap" VerticalAlignment="Top"/>
    <Button x:Name="btn_b" Content="B" Height="56" Margin="297,149,252,0" VerticalAlignment="Top" Click="btn_b_Click" />
</Grid>

public partial class clear : Window
{
    public clear()
    {
        this.InitializeComponent();         

    }

    private void btn_a_Click(object sender, RoutedEventArgs e)
    {
        txt_display.Text += btn_a.Content.ToString();
        txt_display.SelectionStart = txt_display.Text.Length;
        txt_display.Focus();
    }

    private void btn_b_Click(object sender, RoutedEventArgs e)
    {
        txt_display.Text += btn_b.Content.ToString();
        txt_display.SelectionStart = txt_display.Text.Length;
        txt_display.Focus();
    }
}

ここに画像の説明を入力してください

ここでは、上の図のようにマウスの選択が開始されているボタンのコンテンツをバインドしたいと思います。

しかし、私はこのシナリオを解決できません。

私を助けてください。

4

2 に答える 2

1

あなたの質問を理解できるかどうかはわかりませんが、ボタンの内容をテキストボックスのカーソル位置に挿入しようとしていますか?その場合は、TextBoxのcaretインデックスを取得して、挿入する場所を決定する必要があります。

private void btn_a_Click(object sender, RoutedEventArgs e)
{
    var caretIndex = txt_display.CaretIndex;
    txt_display.Text =txt_display.Text.Insert(caretIndex, btn_a.Content.ToString());
    txt_display.SelectionStart = txt_display.Text.Length;
    txt_display.Focus();
}
于 2012-06-04T17:38:29.490 に答える
0

やりたいことをもっと具体的にする必要があります。ボタンが2つだけあり、それらのコンテンツをTextBoxのキャレット位置の右側にある1番目と2番目の文字と同期させたい場合は、次のようにTextBoxSelectionChangedイベントのイベントを作成できます。

    private void txtbox_SelectionChanged(object sender, RoutedEventArgs e)
    {
        if (btn != null)
        {
            string letters = txtbox.Text.Substring(txtbox.SelectionStart);

            if (letters.Length > 0)
                btn.Content = letters[0];

            if (letters.Length > 1)
                btn2.Content = letters[1];
        }
    }

この場合、「HelloWorld!」というテキストが含まれるTextBoxがある場合。カレットの位置がdの左側にある場合、ボタンには「d」と「!」というテキストが表示されます。それぞれ。

于 2012-06-04T17:43:30.617 に答える