怎么样改变控件的位置

比如有个控件在FORM里,我只要按WASD这四个方向键就可以移动这个控件,怎么做?... 比如有个控件在FORM里,我只要按WASD这四个方向键就可以移动这个控件,怎么做? 展开
 我来答
居下而存
推荐于2016-05-14 · 超过28用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:79.4万
展开全部
控件的位置是由Location属性决定的

Location存的是两个属性 分别代表控件距离窗体左边(left)与顶端(top)的距离

你想改变控件位置 也就是说要改变Location的值

比如你有个控件是 TextBox1

那么 TextBox1.Left += 1;就表示将控件向右移动1 就是距离左边的距离加了1
反之就是向右
同样 TextBox1.Top += 1;就代表向下 反之就是向上

如果你想直接指定空间位置 就可以 TextBox1.Location = new Point(横坐标,纵坐标);
参数是两个整形 分别代表Left和Top

怎么样 现在是不是自己很简单就可以做出控件移动的事件了?

不明白百度HI我 我在线

-----------------------------------------------------------

针对你HI我的问题在此补充

如果想使用键盘事件作如下动作

首先在Form的属性中 将 KeyPerview属性设置为true默认为false

然后在Form事件列表中 找到KeyDown事件

然后双击右边的空白 在自动生成的事件代码里写上以下

代码
if (e.KeyCode == Keys.D)//右移
textBox1.Left += 1;
if (e.KeyCode == Keys.A)//左
textBox1.Left -= 1;
if (e.KeyCode == Keys.S)//下
textBox1.Top += 1;
if (e.KeyCode == Keys.W)//上
textBox1.Left -= 1;

你问的是怎么获得你按键的 原理是这样的

你双击Form的KeyDown事件时候

在Form1.Designer.cs文件中会自动生成这么一句话

this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form2_KeyDown);

功能就是 当Form1中有键盘按下动作时 会去调用你写的KeyDown方法

方法里写的就是实现改变位置的代码 你明白了不?

参考资料: 自己写的.

是吖宝q
2009-04-11 · TA获得超过611个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:182万
展开全部
这个虽然没搞过,但我想可以这样应该可行(基于JS)

在移动前,你的先写一个控件移动函数

function 移动(方向,距离,控件ID){

用开关语句,应该不复杂,但需要先获得当前控件的原位置
...

}

1,需要用JS来捕获当前界面获得焦点的控件,参考代码如下

<html>
<head>
<script language="javascript">
function f()
{
if(event.srcElement.name)
{
alert(event.srcElement.name);
}
}

</script>
</head>
<body>
<form name=form1>
<input type=text name="txtDream" onMouseOver="f()">
<input type="submit" name="subDream" onMouseOver="f()">
</form>
</body>
</html>

来源:http://blog.csdn.net/itfly8/archive/2007/03/17/1532219.aspx

2,捕获当前的键盘事件,下面代码获得键值,运行于IE下
<script language="javascript">
ie4 = (document.all) ? true : false;

ns4 = (document.layers) ? true : false;

function keyDown(e){

if (ns4){

var nKey=e.which;

document.keyform.keytext.value="键值是"+nKey;

}

if (ie4){

var ieKey=event.keyCode;

document.keyform.keytext.value="键值是"+ieKey;

}

}

document.onkeydown=keyDown;

if (ns4) document.captureEvents(Event.KEYDOWN);

</script>
<form name="keyform"> <input type="text" name="keytext" value="注意这里" size="20"> </form>

来源:http://hi.baidu.com/wwzg999/blog/item/4a84754ea5d38ac8d0c86a39.html

3,再用JS判断当前的焦点控件是否是你要控制的那个控件,在判断键值,如果是WASD这几个的键值,则通过事先写好的控件位置移动函数执行即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
atalentsoft
2009-04-11 · TA获得超过4989个赞
知道小有建树答主
回答量:690
采纳率:0%
帮助的人:0
展开全部
把Form.KeyPreview改成true

假设移动一个button,修改Form KeyDown事件

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.W:
button1.Top -= 1;
break;
case Keys.S:
button1.Top += 1;
break;
case Keys.A:
button1.Left -= 1;
break;
case Keys.D:
button1.Left += 1;
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式