标签: textbox

WPF MVVM焦点字段加载

我有一个View,它下面有一个TextBox和几个Button.当窗口加载时我希望它TextBox具有焦点.

如果我没有使用MVVM,我只会调用TextBox.Focus()Loaded事件.但是我的ViewModel不了解我的视图,那么如何在不将代码放入视图的代码隐藏的情况下完成此操作呢?

编辑:在阅读答案后,我决定将此代码放在xaml视图中

<DockPanel FocusManager.FocusedElement="{Binding ElementName=MessageTextBox}">    
    <TextBox Name="MessageTextBox" Text="{Binding Message}"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

如果这不是初始页面焦点,我可能会推荐Jon Galloway的答案,因为它可以从ViewModel控制.

c# wpf textbox focus mvvm

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

在WPF中禁用按钮?

我的WPF应用程序中有一个Button和一个TextBox.在用户在TextBox中输入某些文本之前,如何才能启用Button?

wpf textbox button

48
推荐指数
4
解决办法
10万
查看次数

输入按键事件处理程序

我想在输入键被击中时从文本框中捕获文本.我正在使用WPF/visual studio 2010/.NET 4.我不知道在标签中使用什么事件处理程序?我也想为maskedtextbox做同样的事情.

c# wpf user-interface textbox maskedtextbox

48
推荐指数
3
解决办法
26万
查看次数

如何在C#组合框或文本框中动态更改自动完成条目?

我在C#中有一个组合框,我想用它来使用自动完成建议,但是我希望能够在用户输入时更改自动完成条目,因为可能的有效条目太多而无法AutoCompleteStringCollection在启动时填充.

例如,假设我让用户输入名称.我有一个可能的名字列表("乔","约翰")和一个姓氏列表("博客","史密斯"),但如果我有一千个,那么这将是一百万个可能的字符串 - 太多,无法输入自动完成条目.所以最初我想只有名字作为建议("乔","约翰"),然后一旦用户键入了第一个名字("乔"),我想删除现有的自动完成条目并替换他们使用一个新的集合,包括所选的名字,然后是可能的姓氏("Joe Bloggs","Joe Smith").为此,我尝试了以下代码:

void InitializeComboBox()
{
    ComboName.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    ComboName.AutoCompleteSource = AutoCompleteSource.CustomSource;
    ComboName.AutoCompleteCustomSource = new AutoCompleteStringCollection();
    ComboName.TextChanged += new EventHandler( ComboName_TextChanged );
}

void ComboName_TextChanged( object sender, EventArgs e )
{
    string text = this.ComboName.Text;
    string[] suggestions = GetNameSuggestions( text );

    this.ComboQuery.AutoCompleteCustomSource.Clear();
    this.ComboQuery.AutoCompleteCustomSource.AddRange( suggestions );
}
Run Code Online (Sandbox Code Playgroud)

但是,这不能正常工作.似乎对Clear()的调用导致自动完成机制"关闭",直到组合框中出现下一个字符,但是当下一个字符出现时,上面的代码再次调用Clear(),所以用户从不实际上看到了自动完成功能.它还会导致组合框的全部内容被选中,因此在每个按键之间您必须取消选择现有文本,这使其无法使用.如果我删除对Clear()的调用,则自动完成有效,但似乎AddRange()调用无效,因为我添加的新建议未出现在自动完成下拉列表中.

我一直在寻找解决方案,并看到了各种建议,但我无法使其中任何一个工作 - 自动完成功能显示为禁用,或新的字符串不显示.这是我尝试的一系列事项:

  • BeginUpdate()在更改字符串之前调用,EndUpdate()之后调用.
  • 调用Remove()所有现有字符串而不是Clear().
  • 在更新字符串时清除组合框中的文本,然后将其添加回来.
  • AutoCompleteMode我更改字符串时将设置为"无",然后将其设置回"SuggestAppend".
  • 挂钩TextUpdateKeyPress事件而不是TextChanged.
  • 每次都AutoCompleteCustomSource用新的替换现有的AutoCompleteStringCollection.

即使在各种组合中,这些都没有帮助. …

c# combobox textbox autocomplete winforms

47
推荐指数
2
解决办法
5万
查看次数

更改文本框高度?

如何更改文本框的高度?

以下两项都不奏效:

this.TextBox1.Size = new System.Drawing.Size(173, 100);
Run Code Online (Sandbox Code Playgroud)

要么

this.TextBox1.Size.Height = 100;
Run Code Online (Sandbox Code Playgroud)

我希望能够更改单行文本框高度以适应其上的字体大小,如果可能的话不使用多行.

c# textbox .net-3.5 winforms

46
推荐指数
5
解决办法
16万
查看次数

自动在matplotlib中定位文本框

有没有办法告诉pyplot.text()像pyplot.legend()一样的位置?

像传奇论点这样的东西会很棒:

plt.legend(loc="upper left")
Run Code Online (Sandbox Code Playgroud)

我试图用字母标记不同轴的子图(例如"A","B").我认为必须有一种比手动估算位置更好的方法.

谢谢

python textbox matplotlib

46
推荐指数
3
解决办法
4万
查看次数

jQuery textbox.val('xxxx')没有导致更改为fire?

我的页面上有以下jQuery代码:

var isChanged = false;
$(document).ready(function()
{
    $('.change').change(function() {
        isChanged = true;
    });
});
Run Code Online (Sandbox Code Playgroud)

我正在使用一个插件来修改它链接到的文本框的值:

target.val('xxxx');
Run Code Online (Sandbox Code Playgroud)

html中的文本框(来自asp.net)是:

<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank"
  type="text"
  value="52°"
  id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank"
  class="change atiselector" />
Run Code Online (Sandbox Code Playgroud)

使用代码更改文本框的值时,更改不会触发.如果我在文本框中输入,则更改将触发.我错过了什么?

jquery textbox onchange

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

WPF:AutoComplete TextBox,...再次

另一个SO问题询问WPF中的自动完成文本框.有几个人建了这些,其中一个答案就是这个代码项目的文章.

但我没有找到任何WPF自动完成文本框与WinForms自动完成文本框进行比较.codeproject示例有效,有点......

alt text http://i50.tinypic.com/sx2ej5.jpg

...但

  • 它不是一个可重用的控件或DLL.这是我需要嵌入每个应用程序的代码.
  • 它仅适用于目录.它没有用于设置自动完成源是仅文件系统目录,还是文件系统文件或....等的属性.当然,我可以编写代码来执行此操作,但是...我宁愿使用已编写的其他人的代码.
  • 它没有设置弹出窗口大小等属性.
  • 有一个弹出列表框,显示可能的完成.浏览该列表时,文本框不会更改.在焦点列表框中键入字符不会导致文本框更新.
  • 远离列表框导航焦点不会使弹出列表框消失.这令人困惑.

所以,我的问题:

*没有任何人有一个免费的WPF自动完成文本框的作品,并提供优质的UI体验?*


回答

我是这样做的:

0.0.获得WPF工具包

0.1.运行WPF Toolkit的MSI

0.2.在Visual Studio中,从工具箱(特别是数据可视化组)拖放到UI设计器中.在VS工具箱中看起来像这样:

替代文字http://i49.tinypic.com/s12q6x.jpg

如果您不想使用设计师,请手工制作xaml.它看起来像这样:


<toolkit:AutoCompleteBox
   ToolTip="Enter the path of an assembly."
   x:Name="tbAssembly" Height="27" Width="102"
   Populating="tbAssembly_Populating" />
Run Code Online (Sandbox Code Playgroud)

...工具箱命名空间以这种方式映射的位置:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
Run Code Online (Sandbox Code Playgroud)

0.3.提供Populating事件的代码.这是我用过的东西:


private void tbAssembly_Populating(object sender, System.Windows.Controls.PopulatingEventArgs e)
{
    string text = tbAssembly.Text;
    string dirname = Path.GetDirectoryName(text);

    if (Directory.Exists(Path.GetDirectoryName(dirname)))
    {
        string[] files = Directory.GetFiles(dirname, "*.*", SearchOption.TopDirectoryOnly);
        string[] dirs = Directory.GetDirectories(dirname, "*.*", SearchOption.TopDirectoryOnly);
        var candidates = new List<string>(); …
Run Code Online (Sandbox Code Playgroud)

wpf textbox autocomplete

45
推荐指数
2
解决办法
5万
查看次数

谷歌浏览器>文本框>活动时黄色边框..?

我今天一直在修改表单,并在Chrome中测试它.我注意到在选择带有border:0或none的文本框时,它仍会在其周围放置黄色边框.有谁知道摆脱这个边界的方法?我通常不会那么困扰但是我使用的配色方案看起来非常糟糕.

提前致谢.

问候,

理查德

PS我也试过使用!重要,以防其他东西在CSS中将边框设置为黄色.

css textbox google-chrome input border

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

textbox.Focus()无法在C#中工作

我想知道为什么这段代码无法集中文本框......?

private void sendEmail_btn_Click(object sender, EventArgs e)
{    
    String sendTo = recipientEmail_tbx.Text.Trim();
    if (!IsValidEmailAddress(sendTo))
    {
        MessageBox.Show("Please Enter valid Email address","Cognex" MessageBoxButtons.OK, MessageBoxIcon.Error);                
        recipientEmail_tbx.Focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# textbox focus winforms

43
推荐指数
2
解决办法
5万
查看次数