StyledStringElement & # 39;利用# 39;事件

本文关键字:事件 利用 StyledStringElement | 更新日期: 2023-09-27 18:11:44

所以,当用户单击'StyledStringElement'时,我试图打开电子邮件界面-要做到这一点,我一直在调用选定的事件,但我已经获得了错误-

"错误CS1502:最佳重载方法匹配' MonoTouch.Dialog.Section.Add(MonoTouch.Dialog.Element)'有一些无效参数(CS1502)"

"错误CS1503:参数#1' cannot convert void "表达式类型"MonoTouch.Dialog。元素"(CS1503)"

我使用的代码是-

        section.Add(new StyledStringElement("Contact Email",item.Email) {
            BackgroundColor=UIColor.FromRGB(71,165,209),
            TextColor=UIColor.White,
            DetailColor=UIColor.White,
        }.Tapped += delegate {
            MFMailComposeViewController email = new MFMailComposeViewController();
            this.NavigationController.PresentViewController(email,true,null);
    });

是什么导致这个错误,我如何修复它?

StyledStringElement & # 39;利用# 39;事件

你需要单独初始化"StyledStringElement"

例如:

var style = new StyledStringElement("Contact Email",item.Email) {
            BackgroundColor=UIColor.FromRGB(71,165,209),
            TextColor=UIColor.White,
            DetailColor=UIColor.White,
        };
style.Tapped += delegate {
            MFMailComposeViewController email = new MFMailComposeViewController();
            this.NavigationController.PresentViewController(email,true,null);
    };
section.Add(style);

new X().SomeEvent += Handler的返回值是void,所以你不能在你的部分中添加它。

不幸的是,c#官方**不支持在对象初始化器中分配事件(在对象初始化器中分配事件),所以你也不能这样做:

new X() {
    SomeEvent += Handler,
};

如果你仍然想同时实例化和附加,最接近的方法是

StyleStringElement style;
section.Add(style = new StyledStringElement("Contact Email",item.Email) {
        BackgroundColor=UIColor.FromRGB(71,165,209),
        TextColor=UIColor.White,
        DetailColor=UIColor.White,
    });
style.Tapped += delegate {
        MFMailComposeViewController email = new MFMailComposeViewController();
        this.NavigationController.PresentViewController(email,true,null);
};

**当我说正式的时候,这是因为我记得有些人让它在mono c#编译器的一些分支中工作。