我想在Rectangle
事件中使用以下代码绘制Paint
:
e.Graphics.DrawRectangle(Pens.Red, x1, y1, width1, height1);
如何使用c#将矩形的宽度/高度数据绑定到TextBox
中的Form
?我希望根据TextBox
输入立即改变绘制矩形的大小。
答案 0 :(得分:1)
要解决这个问题,请考虑以下几点:
Rectangle
是struct
,您无法将其用于数据绑定,因为在设置数据绑定时,您的结构将传递给Binding
对象按值,所有更改将在另一个实例上进行。您需要一个类来保存数据绑定的属性。
为了能够刷新绘图,您应该将绘图逻辑放在绘图表面的Paint
事件中。然后,当您需要刷新绘图时,请调用绘图表面的Invalidate
方法。
您可以在更改文本后立即重绘矩形,而不使用数据绑定。在这种情况下,只需在Invalidate
的{{1}}事件中调用TextChanged
绘制表面的方法,并解析输入的值并在TextBox
事件中使用它绘制矩形。
示例强>
在此示例中,我使用Paint
作为绘图表面,并在Form
中定义Width1
和Height1
属性,并将Form
控件绑定到这些属性。我在属性的setter中调用TextBox
来刷新表单上的绘画:
this.Invalidate()