C#怎么讓控件上下左右移動?(轉)
http://wenwen.sogou.com/z/q231436494.htm
在winform中捕獲上下左右鍵等控制鍵的按鍵事件(轉)
http://blog.csdn.net/jiankunking/article/details/47320439
C#中 根據左右上下鍵控制不多個控件的焦點(轉)
如圖 有多個控件 根據上下左右鍵 控制每個控件的焦點;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//定義一個二位數組 存放TextBox控件
TextBox[,] arr;
private void Form1_Load(object sender, EventArgs e)
{
//初始化數組
arr = new TextBox[3, 3]{{textBox1,textBox2,textBox3},
{textBox4,textBox5,textBox6},
{textBox7,textBox8,textBox9}
};
}
/// <summary>
/// 窗體鍵盤事件 注: 啟用此事件之前 先設置KeyPreView屬性為True
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
//首先獲取當前焦點的控件
TextBox txt = (TextBox)GetFocusedControl();
//獲取當前焦點控件的在數組中對應的位置 此值事先存放在控件的Tag屬性中
int x = int.Parse(txt.Tag.ToString().Substring(0, 1));
int y = int.Parse(txt.Tag.ToString().Substring(1, 1));
if (e.KeyCode == Keys.Left)
{
if (y > 0)
{
arr[x, y-1].Focus();
}
}
else if (e.KeyCode == Keys.Right)
{
if (y < 2)
{
arr[x,y + 1].Focus();
}
}
else if (e.KeyCode == Keys.Up)
{
if (x > 0)
{
arr[x-1, y].Focus();
}
}
else if (e.KeyCode == Keys.Down)
{
if (x < 2)
{
arr[x+1, y].Focus();
}
}
}
// DLL調用注冊
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr GetFocus();
/// <summary>
/// 當前擁有焦點的控件
/// </summary>
/// <param name="formControl"></param>
/// <returns></returns>
public static Control GetFocusedControl()
{
Control focusedControl = null;
try
{
IntPtr focusedHandle = GetFocus();
if (focusedHandle != IntPtr.Zero)
{
focusedControl = Control.FromChildHandle(focusedHandle);
}
}
catch { }
return focusedControl;
}
}
C# Winform 自適應大小 按上下鍵切換控件焦點(轉)
按上下鍵切換控件焦點(只對textbox有效)
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 40 || e.KeyValue == 13)
{
SendKeys.Send("{TAB}");
}
if (e.KeyValue == 38)
{
int index= this.textBox2.TabIndex;
for (int i = 0; i < this.Controls.Count; i++)
{
if (this.Controls[i].TabIndex == (index - 1))
{
this.Controls[i].Focus();
break;
}
}
}
}
自適應大小
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState.ToString() == "Maximized")
{
this.dataGridView1.Width = this.Size.Width-35;
}
else if (this.WindowState.ToString() == "Normal")
{
this.dataGridView1.Width = this.Size.Width-35;
}
else
{
this.dataGridView1.Width = this.Size.Width-35;
}
}