如何将 EditText.TextChanged 事件传递给父级?
How to pass EditText.TextChanged Event to Parent?
通常我使用此代码来处理 EditText
中的 TextChanged
EditText myEditText = new EditText(Context);
myEditText.TextChanged += (sender, e) => { /* do something */ };
现在,我定义了自己的 LinearLayout,其中包含一个 EditText。我的问题是,如何 将 TextChanged 事件从 EditText 传递到 LinearLayout 的方法,这样我就可以调用
MyLinearLayout.TextChanged
而不是 MyLinearLayout.editText.TextChanged
public class MyLinearLayout : LinearLayout
{
private EditText editText;
public MyLinearLayout(Context context) : base(context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
editText = new EditText(context);
AddView(_editText);
}
// some method like this
public event EventHandler<Android.Text.TextChangedEventArgs> TextChanged
{
// just passes the _editText.TextChanged
}
}
您可以在自定义 LinearLayout 中定义一个 EventHandler ,并在调用 EditText 的 TextChanged 事件时调用它
using System;
using Android.Content;
using Android.Runtime;
using Android.Text;
using Android.Util;
using Android.Views;
using Android.Widget;
using Android.Graphics;
namespace App11
{
public class MyLinearLayout : LinearLayout
{
private EditText editText;
public MyLinearLayout(Context context, IAttributeSet attrs) : base(context, attrs)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
editText = new EditText(context);
editText.TextChanged += EditText_TextChanged;
AddView(editText, LayoutParameters);
}
private void EditText_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
{
TextChanged.Invoke(this, e);
}
public event EventHandler<TextChangedEventArgs> TextChanged;
}
}
MyLinearLayout myLinearLayout = FindViewById<MyLinearLayout>(Resource.Id.myLinearLayout);
myLinearLayout.TextChanged += MyLinearLayout_TextChanged;
private void MyLinearLayout_TextChanged(object sender, TextChangedEventArgs e)
{
Console.WriteLine(e.Text);
}
通常我使用此代码来处理 EditText
中的 TextChangedEditText myEditText = new EditText(Context);
myEditText.TextChanged += (sender, e) => { /* do something */ };
现在,我定义了自己的 LinearLayout,其中包含一个 EditText。我的问题是,如何 将 TextChanged 事件从 EditText 传递到 LinearLayout 的方法,这样我就可以调用
MyLinearLayout.TextChanged
而不是 MyLinearLayout.editText.TextChanged
public class MyLinearLayout : LinearLayout
{
private EditText editText;
public MyLinearLayout(Context context) : base(context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
editText = new EditText(context);
AddView(_editText);
}
// some method like this
public event EventHandler<Android.Text.TextChangedEventArgs> TextChanged
{
// just passes the _editText.TextChanged
}
}
您可以在自定义 LinearLayout 中定义一个 EventHandler ,并在调用 EditText 的 TextChanged 事件时调用它
using System;
using Android.Content;
using Android.Runtime;
using Android.Text;
using Android.Util;
using Android.Views;
using Android.Widget;
using Android.Graphics;
namespace App11
{
public class MyLinearLayout : LinearLayout
{
private EditText editText;
public MyLinearLayout(Context context, IAttributeSet attrs) : base(context, attrs)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
editText = new EditText(context);
editText.TextChanged += EditText_TextChanged;
AddView(editText, LayoutParameters);
}
private void EditText_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
{
TextChanged.Invoke(this, e);
}
public event EventHandler<TextChangedEventArgs> TextChanged;
}
}
MyLinearLayout myLinearLayout = FindViewById<MyLinearLayout>(Resource.Id.myLinearLayout);
myLinearLayout.TextChanged += MyLinearLayout_TextChanged;
private void MyLinearLayout_TextChanged(object sender, TextChangedEventArgs e)
{
Console.WriteLine(e.Text);
}