我写了一个非常简单的控件。 C#Visual Studio 2008.它的输出应该是,并且是一个dll。我在项目中添加了对我打算使用它的dll的引用。关于如何编写控件的msdn文章声明它应该出现在“添加引用/项目”列表中,它不会,但我只是在“浏览”选项卡下导航到它,转到/ bin文件夹并添加引用那种方式。我将它拖到我的工具箱中,但它显示为'Text:xhair_tool',当我尝试将其添加到表单时,它不会,所以我做错了什么?它被创建为“Windows窗体控件”项目。它应该导出一个返回数组的'Target'方法,如下所示。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace xhair_tool
{
public partial class xhair : UserControl
{
public xhair()
{
InitializeComponent();
}
private void xhair_Load(object sender, EventArgs e)
{
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Black, 1);
SolidBrush redBrush = new SolidBrush(Color.Red);
g.DrawLine(pen, 8, 0, 8, 7);
g.DrawLine(pen, 8, 9, 8, 16);
g.DrawLine(pen, 0, 8, 7, 8);
g.DrawLine(pen, 9, 8, 16, 8);
//ControlPaint.DrawReversibleLine(start, end, backColor)
}
/// <summary>
/// Returns the point at the center of the crosshair
/// </summary>
/// <returns>int[x,y]</returns>
public int[] Target
{
get
{
int[] _xy = new int[2];
_xy[0] = this.Left + 8;
_xy[1] = this.Top + 8;
return _xy;
}
}
}
}
谢谢,R。
答案 0 :(得分:0)
右键单击工具箱,单击“选择项目”,然后添加控件。
控制的一些建议:
Target
应该是Point
,而不是int[]
。UserControl
适用于包含其他控件的控件。既然你没有,你应该继承Control
。见here。您应该设置以下样式:
SetStyle(ControlStyles.AllPaintingInWmPaint
| ControlStyles.UserPaint
| ControlStyles.Opaque
| ControlStyles.OptimizedDoubleBuffer
| ControlStyles.ResizeRedraw,
true);
答案 1 :(得分:0)
“将其拖到我的工具箱”部分无法正常工作。右键单击工具箱并选择“选择项目”,使用“浏览”选项卡。
最好只将UserControl添加到项目中,而不是将其自身放入DLL中。执行此操作后,编译后会自动显示在工具箱的顶部。