我正在使用EditText过滤我的列表.我想在用户输入EditText后0.5秒过滤列表.我为此目的使用了这个afterTextChanged事件TextWatcher.但是,对于EditText中的每个字符更改,此事件都会增加.
我该怎么办?
我有一个简单的应用程序,可以反转在另一个文本框中键入的任何文本.问题是,您可以修改任一文本框,更改将(字面上)反映在另一个文本框中.
我写了这段代码,相信它会引起问题.
private void realText_TextChanged(object sender, EventArgs e)
{
mirrorText.Text = mirror(realText.Text);
}
private void mirrorText_TextChanged(object sender, EventArgs e)
{
realText.Text = mirror(mirrorText.Text);
}
private string mirror(string text)
{
return new string(text.Reverse().ToArray()).Replace("\n\r", "\r\n");
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试了它,相信它会导致无限循环(realText变化mirrorText,另一个事件发生,mirrorText变化realText等).但是,除了预期的行为之外什么也没发生
我当然对此感到高兴,我可以把它放在这里.或者我可以吗?
我很确定TextChanged每当Text发生变化时都会被触发.这是事件中某些错误保护的预期行为,还是我很幸运?这个代码在另一台计算机,其他构建设置等上是否会出错?它可以很容易地修复:
private void realText_TextChanged(object sender, EventArgs e)
{
if (realText.Focused)
{
mirrorText.Text = Mirror(realText.Text);
}
}
Run Code Online (Sandbox Code Playgroud)
我可能会这样做是为了安全,但需要检查一下吗?(我甚至不会问是否推荐它.)
我有这个代码.当我从建议列表中选择一个项目时,onTextChanged首先发生,然后oItemClicked在此之后发生.现在我想在选择单词时首先出现"onItemClicked",然后出现"onTextChanged".我看了一下Android doc,但没有提到这个话题.
package com.autocompletetest;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class OnItemClickAndOnTextChangedActivity extends Activity implements TextWatcher, OnItemClickListener {
private AutoCompleteTextView textView;
private static final String[] TEMP = new String[] {
"Beep", "Belgium", "Best", "Bubble", "Bye"
};
@Override
protected void onCreate(final Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
textView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
textView.setOnItemClickListener(this);
textView.addTextChangedListener(this);
textView.setThreshold(1);
final List<String> list = Arrays.asList(TEMP);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
OnItemClickAndOnTextChangedActivity.this, …Run Code Online (Sandbox Code Playgroud) 我有一个wpf TextBox,并连接了它的TextChanged事件.问题是此事件仅在焦点从文本框中删除时触发.
是否存在类似于TextChanged的事件,当字符键入文本框时会立即触发,而不是焦点更改时?
对于每个控件都有很多事件,两个非常相似,如Text Update和Text Changed,唔是不同的?
我使用ASP.NET更新面板使用TextChanged为文本框检索用户信息,这是我的代码:
<asp:UpdatePanel runat="server" ID="up1" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:TextBox runat="server" ID="loginEmail" Text="Email"
CssClass="textBoxes" OnTextChanged="userInfo" AutoPostBack="true"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="loginEmail" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
和背后的代码:
string url, emailInfo;
emailInfo = loginEmail.Text;
url = Membership.GetUserNameByEmail(emailInfo);
emailText.InnerText = "Email: " + emailInfo;
urlText.InnerText = "Webiste: http://www.Elwazefa.com/User/" + url ;
Run Code Online (Sandbox Code Playgroud)
在ButtonClick或PageLoad 上,代码不会在textchanged上触发,但它会消失.
问题是什么?
使用ASP.NET 4.0
我有TextBox一个TextChanged事件接线.最后它正在查询SQL数据库,所以我想限制查询的数量.
我只想在用户没有按下一个键的情况下进行查询,比如说... 300毫秒左右.如果由于某种原因上一个查询仍在执行,我需要取消它,然后发出一个新查询.
我有以下代码,按下enter/return时不显示MessageBox.
对于任何其他键(即字母/数字),MessageBox显示为False.
private void cbServer_TextChanged(object sender, EventArgs e)
{
if (enterPressed)
{
MessageBox.Show("Enter pressed");
}
else
MessageBox.Show("False");
}
private void cbServer_Keydown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
enterPressed = true;
MessageBox.Show("Enter presssed: " + enterPressed);
}
else
enterPressed = false;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:上面的代码,我认为问题是_Keydown,所以我只发布了.
我有很多片段,它们以2个标签布局显示,FragmentStatePagerAdapter在每个片段中都有一个Recycler视图,我想在应用栏中使用搜索栏来过滤结果.
首先,我这样做是使用onQueryTextChange listener在onCreateOptionsMenu它工作得很好用几个片段,但是当我加入了执行到其他片段(只是CTRL + C和Ctrl + V)也停止工作,没有结果甚至是用来工作片段我然后在这里读到,最好坚持onQueryTextChange listener in onPrepareOptionsMenu试图避免与invalidateOptionsMenu的问题,但我决定给一个尝试也工作,然后当我将方法添加到我所有的其他片段,但它再次失败,但它确实在一些片段上工作,奇怪的是这些片段恰好全部附加到同一个父片段,但是4个父片段的代码和调用它们的代码是相同的.
我已经阅读的另一种方法是creating an interface通过获取对当前片段的引用从我的主要活动中使用它然后id必须从我的viewpager获取当前显示的片段,我不知道是否有可能任何人都可以权衡这个为了我,
非常感谢
并感谢伟大的编辑大声笑
编辑 尝试接口方法无济于事,虽然我还是初学者,我确实需要找到附加的片段,并且使用fragmentstateviewpager它是不可能的,如果没有使用黑客,必须有一些理由为什么它适用于某些而不是其他的,有时候一点也不
编辑2
所以即时通讯仍然摆弄这个,我几乎没有回复所以让我的肉体这一点,所以我在主要活动中添加菜单布局,像这样
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.dashboard, menu);
SearchView searchView =
(SearchView)menu.findItem(R.id.action_search).getActionView();
SearchManager searchManager = (SearchManager)
getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后从onPrepareOptionsMenu中的片段添加一个监听器,就像这样
@Override
public void onPrepareOptionsMenu(Menu menu) {
// Inflate the menu; this adds items …Run Code Online (Sandbox Code Playgroud) QPlainTextEdit我的应用程序中有一个QSyntaxHighlighter分配给它的小部件。在该文本编辑区域内的每个内容更改时,我需要收到通知(以更新全局应用程序保存/更改状态)。但是,textChanged()每次荧光笔开始工作时也会发出信号,我需要以某种方式过滤掉。
我已经看过了modificationChanged(),但这似乎也不起作用。它忽略突出显示的更改并在第一次内容更改时成功通知我,但不会通知我任何后续更改。该文件提到,我应该能够与复位内部状态setModified(false),但这种方法似乎并不存在。
关于如何过滤更改的任何想法?
我一定要切换到QTextDocument似乎有哪些单contentsChanged()是说忽略语法高亮的变化?
textchanged ×10
c# ×4
android ×3
events ×2
textbox ×2
winforms ×2
.net ×1
asp.net ×1
c++ ×1
filter ×1
keydown ×1
lost-focus ×1
qt5 ×1
searchview ×1
textwatcher ×1
updatepanel ×1
wpf ×1