【问题标题】:How to add events after load back by XamlReader如何在 XamlReader 加载后添加事件
【发布时间】:2014-03-06 00:09:00
【问题描述】:

我创建了一个Rtb类,用来创建一个新的RichTextBox,下面是构造函数和列表

public Rtb()
    {
        newRTB = new RichTextBox();
        newRTB.IsReadOnly = true;
        newRTB.MouseDoubleClick += new MouseButtonEventHandler(newRTB_MouseDoubleClick);
        reqName = "Box" + NextID.ToString();
        newRTB.Name = reqName;
    }     

List<Rtb> rtbeditor = new List<Rtb>(); 

我想点击菜单,添加一个BlockUIContainer,并在容器内新建一个richtextbox,见下

    private void menuReq_Click(object sender, RoutedEventArgs e)
    {
        BlockUIContainer newBlockUC = new BlockUIContainer();
        newBlockUC.Margin = new Thickness(50, 10, 50,10);
        Bigwin.Document.Blocks.Add(newBlockUC); //Bigwin is a big richtextbox
        rtbeditor.Add(new Rtb());
        Rtb newRichTB = new Rtb();                
        newBlockUC.Child = newRichTB.newRTB;  

    }

然后我使用XamlWriter保存,问题是XamlWriter无法保存事件,所以我必须在加载时将事件添加回来,见下文

private void LoadRtfFile(string path)
    {
        FileStream fs = new FileStream(path, FileMode.Open);
        FlowDocument doc = XamlReader.Load(fs) as FlowDocument;
        Bigwin.Document = doc;
        fs.Close();
        foreach (var rtb in rtbeditor)
            rtb.MouseDoubleClick += req1_MouseDoubleClick; //add event to every richtextbox

    }

但是这个解决方案没有添加双击事件,我认为最后一部分代码有问题。那么如何给每一个创建的richtextbox添加事件呢?

【问题讨论】:

  • 抱歉,现在您应该看到 Rtb

标签: c# .net wpf file richtextbox


【解决方案1】:

您在Rtb 上订阅MouseDoubleClick,而不是在Rtb.newRTB 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多