标签: eventargs

WPF:我不懂类TextCompositionEventArgs

我不懂TextCompositionEventArgs类.

有一些名为ControlText,SystemText,Text的字符串成员.然后有一个字段TextConmposistion,它本身又包含成员ControlText,SystemText和Text以及SystemCompositionText和CompositionText字段.

public class TextCompositionEventArgs : InputEventArgs
{
  ..
  public string ControlText { get; }
  public string SystemText { get; }
  public string Text { get; }
  public TextComposition TextComposition { get; }
}

public class TextComposition : DispatcherObject
{
  ..
  public string CompositionText { get; protected set; }
  public string ControlText { get; protected set; }
  public string SystemCompositionText { get; protected set; }
  public string SystemText { get; protected set; }
  public string Text { get; protected set; …
Run Code Online (Sandbox Code Playgroud)

api wpf events frameworks eventargs

10
推荐指数
1
解决办法
4206
查看次数

在Xamarin Forms中的click/tapped事件处理程序中传递对象

这是我的工作班:

public class Job
{
        public string Id{ get; set;}
        public string Name{ get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这是我的ListView:

public class JobListePage:ContentPage
    {
        // Members
        private ListView lstView;

        // Constructor    
        public JobListePage ()
        {
            // Set members
            lstView = new ListView ();

            // Create job objects
            Job[] jobs = {new Job(){Id="1", Name="Benny"}, new Job(){Id="2", Name="Lukas"}};

            // Fill listview with job objects
            lstView.ItemsSource = jobs;

            // HOW CAN I PASS THE TAPPED OBJECT HERE???
            lstView.ItemTapped += async (o, e) => {
                await DisplayAlert("Tapped", …
Run Code Online (Sandbox Code Playgroud)

c# listview eventargs xamarin xamarin.forms

9
推荐指数
2
解决办法
8139
查看次数

.NET:每次事件激发良好做法时都会创建新的EventArgs吗?

例如,我有一个基本事件发布方法:

    protected virtual OnSomeEvent(EventArgs e)
    {
        var handler = SomeEvent;
        if (handler != null)
        {
            handler(this, e);
            // handler(this, new EventArgs());// EDIT: Yes it should be
                                           // handler(this, e),
                                           // ignore this one :D
        }
    }
Run Code Online (Sandbox Code Playgroud)

对于派生类,OnSomeEvent它在触发时覆盖并引发其他事件:

    protected override OnSomeEvent(EventArgs e)
    {
        base.OnSomeEvent(e);

        if (ExtendedEvent != null)
        {
            OnExtendedEvent(e);
        }
    }

    protected void OnExtendedEvent(EventArgs e)
    {
       // some stuff done
       // new information the ExtendedEventArgs object needs 
       //  is not available until this point

       ExtendedEvent(this, new ExtendedEventArgs(someStuff, someOtherStuff)); …
Run Code Online (Sandbox Code Playgroud)

c# events event-handling eventargs

8
推荐指数
2
解决办法
3084
查看次数

EventArgs作为事件模式中的基类的目的是什么?

经典的一般C#事件具有以下参数:

(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

我可以为e参数实现一个具有更具体签名的事件,派生EventArgs.

现在,基类的目的是什么EventArgs?我的意思是......它是空的.没有基础/抽象/虚拟属性,也没有字段或其他内容.

为什么基本事件的参数不像下面那样?

(object sender, object eventArgs)
Run Code Online (Sandbox Code Playgroud)

也就是说,为什么所有带有一些已实现和特定的event-args参数的事件都是EventArgs从一个简单的派生而不是从一个简单派生出来的object

上述问题与以下问题相对应.通用表单中的事件委托是:

delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
Run Code Online (Sandbox Code Playgroud)

并且对参数没有限制e.但是我会期待类似的东西where TEventArgs : EventArgs,一致......

.net c# events eventargs

7
推荐指数
1
解决办法
1182
查看次数

为什么没有对EventHandler <TEventArgs>的约束?

我只是偶然发现(编译时我认为不会编译的东西)EventHandler 并不局限于System.EventArgs类型.

这是内联文档:

#region Assembly mscorlib.dll, v4.0.0.0
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
#endregion

namespace System
{
    // Summary:
    //     Represents the method that will handle an event.
    //
    // Parameters:
    //   sender:
    //     The source of the event.
    //
    //   e:
    //     An System.EventArgs that contains the event data.
    //
    // Type parameters:
    //   TEventArgs:
    //     The type of the event data generated by the event.
    [Serializable]
    public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
}
Run Code Online (Sandbox Code Playgroud)

这是文档和实现之间的不匹配吗?

我问,因为我很好奇.这根本不是抱怨.

c# event-handling eventargs

6
推荐指数
1
解决办法
1124
查看次数

获取发件人姓名事件处理

我希望这个名字能够证明我的问题...所以,我刚刚开始制作一个记忆游戏,并且有25个复选框按钮用于显示项目.

我想知道是否有一种方法可以告诉EventArgs或Object,如果每个按钮使用相同的事件处理程序,它会从哪个按钮发出.

private void checkBox_CheckedChanged(object sender, EventArgs e)
    {
        checkBox = Code which will determine what checkBox sent it.
        if (checkBox.Checked)
        { Box.ChangeState(checkBox, true); }
        else { Box.ChangeState(checkBox, false);}
    }
Run Code Online (Sandbox Code Playgroud)

c# eventargs

6
推荐指数
2
解决办法
4万
查看次数

EventArgs类和事件关键字之间是否存在特殊关联?

在所有.NET书中,我已经阅读了实现事件的指南,解释了您需要子类化EventArgs并使用EventHandler.我在http://msdn.microsoft.com/en-us/library/ms229011.aspx上查找了更多信息,它说"请使用System.EventHandler而不是手动创建新的委托以用作事件处理程序." 我知道使用EventArgs有很重要的理由,但我的问题不是"我应该这样做吗?",而是"我可以这样做吗?".

有什么理由不能使用通用委托代替EventHandler我的事件吗?例如,如果我想要一个强类型的发送者(其他人对此感到恼火object sender?).

为了解释我的意思更好,有什么理由以下不起作用?

public class IoC
{
    public AbstractFactory GetAbstractFactory()
    {
        var factory = new AbstractFactory();
        factory.CreateObject += ()=>new object();
        return factory;
    }
}
public class AbstractFactory
{
    public event Func<object> CreateObject;

    private object OnObjectCreated()
    {
        if(CreateObject == null)
        {
            throw new Exception("Not injected.");
        }
        return CreateObject();
    }


    private object _injectedObject;
    public object InjectedObject
    {
        get
        {
            if(_injectedObject == null)
            {
                _injectedObject = OnObjectCreated();
            }
            return _injectedObject;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# events event-handling eventargs

5
推荐指数
1
解决办法
297
查看次数

Jquery - 使用jquery传递asp按钮命令参数

我有asp按钮:

<asp:button ID="btn1" runat="server" CommandArgument="" CssClass="btn1" OnClick="button_click"></asp:button>
Run Code Online (Sandbox Code Playgroud)

和脚本:

$("a").click(function () {
            var val = $(this).attr('id').toString();                            
            $('.btn1').attr('CommandArgument',val);
            alert($('.btn1').attr('CommandArgument').toString());
            $('.btn1').click();
        });
Run Code Online (Sandbox Code Playgroud)

点击后它会提醒我命令参数.但是在下一步 - 当我触发btn1点击jquery时,它转到codebehind并且命令参数为空.我可以用jquery以某种方式传递命令参数吗?

我试图将值保存到全局变量但是在回发后它们都是空的.我不想使用cookies或viewstate.

谢谢!

asp.net jquery eventargs

5
推荐指数
1
解决办法
3万
查看次数

我的类不能用作 .Net 4 中泛型类型或方法“System.EventHandler&lt;TEventArgs&gt;”中的类型参数“TEventArgs”

我试图了解 EventHandler 并且必须使用通知项目。这是项目的链接: https ://codeload.github.com/mike-eason/WPF_ToastNotifications/zip/master

我所做的只是将 .Net-framework 从 4.5 更改为 4

我遇到了这个错误:

我的类不能用作泛型类型或方法“System.EventHandler”中的类型参数“TEventArgs”

ToastNotification类:

 [TemplatePart(Name = "PART_DismissButton", Type = typeof(Button))]
    public class ToastNotification : ContentControl
    {
        public event EventHandler Dismissed;

        public string Title
        {
            get { return (string)GetValue(TitleProperty); }
            set { SetValue(TitleProperty, value); }
        }

        public static readonly DependencyProperty TitleProperty =
            DependencyProperty.Register("Title", typeof(string), typeof(ToastNotification));

        public string Message
        {
            get { return (string)GetValue(MessageProperty); }
            set { SetValue(MessageProperty, value); }
        }

        public static readonly DependencyProperty MessageProperty =
            DependencyProperty.Register("Message", typeof(string), typeof(ToastNotification));

        public …
Run Code Online (Sandbox Code Playgroud)

c# wpf eventargs eventhandler

5
推荐指数
1
解决办法
1908
查看次数

如何从自定义事件处理程序返回一个项目

我正在处理的项目要求我能够在每次将项目添加到列表时触发事件.为此,我创建了一个继承自List的自定义List类,并添加了一个OnAdd事件.我还想返回作为EventArgs添加的项目,我为其添加了一些代码(如下所示):

    public class ClientListObservable<Client>:List<Client>
    {
        public event EventHandler<EventArgs<Client>> OnAdd;

        public void Add(Client item)
        {
            if (null != OnAdd)
            {
                OnAdd(this, new EventArgs<Client>(item));
            }

            base.Add(item);
        }
    }

    public class EventArgs<Client> : EventArgs
    {
        public EventArgs(Client value)
        {
            m_value = value;
        }

        private Client m_value;

        public Client Value
        {
            get { return m_value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我添加处理程序的方式

clientList.OnAdd += new EventHandler<EventArgs<Client>>(clientList_OnAdd);
Run Code Online (Sandbox Code Playgroud)

但是,在OnAdd方法中:

private void clientList_OnAdd(object sender, EventArgs e)
        {
            //want to be able to access the data members of the Client object …
Run Code Online (Sandbox Code Playgroud)

c# eventargs

4
推荐指数
1
解决办法
753
查看次数