c#自动生成textbox,并可拖拽位置,如何修改textbox属性

简单描述为,点击一个按钮,生成一个控件,并可以修改其属性... 简单描述为,点击一个按钮,生成一个控件,并可以修改其属性 展开
 我来答
lanchaolve
推荐于2017-09-30
知道答主
回答量:26
采纳率:0%
帮助的人:21.3万
展开全部
写一个类 继承他 或者 其实主要写一个方法 MouseDown事件鼠标点击的时候,设计一个属性标识可移动,MouseMove事件更改它的坐标
添加一个组件继承TEXTBOX 例如 :我写了一个 可以移动

namespace Windows
{
public partial class MyTextBox : TextBox
{

public MyTextBox()
{
InitializeComponent();
this.MouseDown += new MouseEventHandler(MyTextBox_MouseDown);
this.MouseUp += new MouseEventHandler(MyTextBox_MouseUp);
this.MouseMove += new MouseEventHandler(MyTextBox_MouseMove);
}

private bool isDrag = false;

void MyTextBox_MouseMove(object sender, MouseEventArgs e)
{
if (isDrag)
{
this.Location = this.FindForm().PointToClient(this.PointToScreen(e.Location));
this.Refresh();
}
}

void MyTextBox_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (isDrag)
{
//textBox1.Location = e.Location;
this.Refresh();
isDrag = false;
}
}
}

void MyTextBox_MouseDown(object sender, MouseEventArgs e)
{
isDrag = true;
}

}
}

可以再修改 其实 可以先缓存一个Rectangle 对象 移动对象 我这里提供一个简单移动的方法 可以进行一部分的优化 设置一个属性开启移动

若是WEB 程序 可以使用脚步 我这里写一个

<script type="text/javascript">
var ids = 0;
var l;
var t;
//清除选中状态
function setidclear() {
ids = 0;
}

//设置选中状态
function setID(id) {
ids = id;
var ev = event;
var mousePos = mouseCoords(ev);
var detailDiv = document.getElementById(ids); //要移动的层
l = (mousePos.x) - detailDiv.style.left.replace("px", "");
t = (mousePos.y) - detailDiv.style.top.replace("px", "");
}
//移动跟随
function mouseMove() {
if (ids != 0) {
var ev = event;
var mousePos = mouseCoords(ev);
var detailDiv = document.getElementById(ids); //要移动的层
var mouseX = (mousePos.x);
var mouseY = (mousePos.y);
detailDiv.style.left = mouseX - l + "px";
detailDiv.style.top = mouseY - t + "px";
//缺少容器溢出代码
}
}
function mouseCoords(ev) {
if (ev.pageX || ev.pageY) {
return {
x: ev.pageX,
y: ev.pageY
};
}
return {
x: ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft,
y: ev.clientY + document.documentElement.scrollTop - document.documentElement.clientTop
};
}

function showWindow() {
var window = document.getElementById("window");
window.style.display = "";
}
</script>

调用方法
<input type="text" id="txt" onmousedown="setID(this.id)" onmouseup="clear()"/> 在控件内

<body onmousemove="mouseMove()" onmouseup="setidclear()" style="background-color: Gray">
追问
可不可以给个winform的例子
追答
上面就是WINFORM 的类啊  创建一个组件 把代码拷贝上去  然后就可以看到你的工具栏就一个组件  拉进去就可以运行了
kzj94qmkk
2011-06-07 · TA获得超过351个赞
知道小有建树答主
回答量:597
采纳率:0%
帮助的人:0
展开全部

pictureBox的SizeMode 属性值改为StretchImage
图片大小就可以刚好和pictureBox一样..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式