c#窗体如何自动选择下一个textbox

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#窗体如何自动选择下一个textbox相关的知识,希望对你有一定的参考价值。

我建了一个窗体,有81个textbox,我设置了一个窗体的最大只能输入2个数,然后要光标跳到下一个窗体中,希望给个数组的代码,我只会
texbox1.foucus()和sendkeys.send(“Tab”)这两个工作量很大,而且代码很长,我不会用textbox写循环代码,我写的无用代码
// TextBox tb1 = new TextBox();
// tb1.TextChanged += new EventHandler(change);
public void change(Object sender, EventArgs e)

//TextBox[] tb = new TextBox[2];
//for (int i = 0; i < 2; i++)
//
//
// tb[i] = new TextBox();
// if (tb[i].Text.Length == 2)
//
// i++;
// tb[i].Focus();
//
//

望给个数组循环代码,新手自己在学,大家别笑,没有分数了,大家见谅,谢谢

参考技术A 不是很明白你的需求,但是可以循环对FORM的控件进行事件的注册,如下:
private void Form1_Load(object sender, EventArgs e)

foreach (Control c in this.Controls)

if (c is TextBox)

c.TextChanged += new EventHandler(c_TextChanged);




void c_TextChanged(object sender, EventArgs e)

TextBox textBox = sender as TextBox;
if (textBox.Text.Length >= 2)


参考技术B public void change(Object sender, EventArgs e)

TextBox txt = (TextBox)sender;
if(txt.Text.Length == 2)
sendkeys....

本回答被提问者采纳
参考技术C 我没了解清楚。
我记得按Tab 件 可以调到下一个控件
不过要设置textBox的属性 TabIndex 属性(1,2,3...)
你想问的是这个么?
参考技术D 你可以参考一下:http://edu.codepub.com/2009/1008/16215.php
基本解答了你的问题

Asp.net开发(C#语言)中如何使textbox的滚动条自动滚动到最底端(或最新一行的信息的位置)

Asp.net开发(C#语言)中如何使textbox的滚动条自动滚动到最底端(或最新一行的信息的位置?
在WinForm窗体开发中有一个方法:ScrollToCaret()可以实现这种功能,但是web开发中怎么找不不到这个方法呢?这到底如何实现啊?
一楼回答等于没有回答,这个我知道,只有TextMode属性改为MultiLine时才会有滚动条。但滚动条只会在最上端不会移动到最下端 。我问的是如何让如何使textbox的滚动条自动滚动到最底端,也就是最新插入的那一行字符串的位置。
四楼真是用心,讲解的很详细,但你却没有看清题意,我问的不是WinForm开发,而是Web开发。但还是要谢谢你的回答。

你是要做聊天的功能吧

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication27 ... /**//// <summary> /// 演示如何在TextBox中让文字循环滚动: /// /// C#中WinForm的TextBox循环自动滚动 /// </summary> public partial class Form1 : Form ... public Form1() ... InitializeComponent(); this.textBox1.Clear(); for (int i = 0; i <= 20;i++ ) ... this.textBox1.Text += string.Format("0:jinjazz__1 ", i,i); this.timer1.Interval = 200; this.timer1.Start(); //发送消息 [DllImport("user32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage( IntPtr hWnd, int wMsg, int wParam, int lParam); //获取滚动条位置 [DllImport("user32")] public static extern int GetScrollPos(IntPtr hwnd, int nBar); //设置滚动条位置 [DllImport("user32.dll")] static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw); public const int EM_LINESCROLL = 0xb6; private void timer1_Tick(object sender, EventArgs e) ... int i= GetScrollPos(this.textBox1.Handle,1); //向下滚动一行 SendMessage(this.textBox1.Handle, EM_LINESCROLL, 0, 1);//0,1代表垂直滚动条向下滚动 //判断是否有位置变化,如果没有则说明到了底部,返回开始处 if (i == GetScrollPos(this.textBox1.Handle, 1)) ... //回到顶部,这里用SetScrollPos似乎有问题,滚动条和文字不是同步更新 this.textBox1.SelectionStart = 0; this.textBox1.SelectionLength = 1; this.textBox1.ScrollToCaret(); this.textBox1.SelectionLength = 0; Console.WriteLine(i); private void textBox1_MouseEnter( object sender, EventArgs e) ... this.timer1.Stop(); private void textBox1_MouseLeave( object sender, EventArgs e) ... this.timer1.Start(); C# TextBox使用是要注意:

1、如何在多行TextBox中写入文本时实现换行:由于Windows系统中,回车符需两上字符。因此方法是使用\r\n标记,如

Label="Calculation "+":.......SUM\r\n"; textBox.AppendText(Label); 另外还有一个办法是用Environment.Newline的方法,可以兼容Windows和Linux系统。

2、如何在多行TextBox中用滚动条,使添加文本后自动滚动显示到最后一行:方法是使用ScrollToCaret方法,自动滚动到插入符的位置,如:

textBox.AppendText(Label); textBox.ScrollToCaret(); C# TextBox滚动的实现以及C# TextBox使用时需要注意的基本内容就向你介绍到这里,希望对你了解和学习C# TextBox滚动、换行等等有所帮助
参考技术A 这个功能是实现不了的,但你可以根据数据量来调整的高,不可能使滚动条自动在最底端,目前微软还没有出这个功能,如果你内容多想显示出来的话,可以根据字符串的量来动态改变该控件的高度。
或者干脆不用textbox。用LABLE控件来赋值,这样就全显示出来了
参考技术B asp.net中是TextMode属性改为MultiLine。 参考技术C javascript试试

以上是关于c#窗体如何自动选择下一个textbox的主要内容,如果未能解决你的问题,请参考以下文章

VS里用C#如何实现点击一个按钮立即弹出另一个窗体?

C#制作不规则窗体,如何使边缘平滑(抗锯齿)?

c# winform 如何让窗体能根据显示器大小自动调节大小呢?

c#如何单击按钮显示另一个窗体?

c#里面如何显示下一个窗体而关闭当前窗体?

c# 怎样禁止键盘按键