小编Hen*_*rik的帖子

在C#中使用鼠标点绘制多边形

我需要能够使用鼠标单击位置绘制多边形.这是我目前的代码:

 //the drawshape varible is called when a button is pressed to select use of this tool
             if (DrawShape == 4)
                {
                    Point[] pp = new Point[3];
                    pp[0] = new Point(e.Location.X, e.Location.Y);
                    pp[1] = new Point(e.Location.X, e.Location.Y);
                    pp[2] = new Point(e.Location.X, e.Location.Y);
                    Graphics G = this.CreateGraphics();
                    G.DrawPolygon(Pens.Black, pp);
                }
Run Code Online (Sandbox Code Playgroud)

谢谢

c# polygon mouseclick-event

5
推荐指数
1
解决办法
1万
查看次数

是否可以在C#中的委托上传递System.Net.Mail.MailMessage对象?

我做了一个小的SmtpSender类来处理发送Smtp MailMessage对象.当消息发送或发送失败时,我引发一个包含"响应"对象的委托,该对象具有用户尝试发送的原始MailMessage以及成功/失败布尔值和错误字符串.然后,用户可以将MailMessage对象重新提交给sender类,以便在需要时再次尝试.

我想知道的是......如果我提出一个包含非托管资源的对象的委托,那么我是否需要在当前范围内处理该对象?如果是这样,在当前作用域中调用Dispose会杀死委托函数接收的对象吗?从长远来看,我担心内存泄漏.

任何建议或帮助将不胜感激.提前致谢!

戴夫

public delegate void SmtpSenderSentEventHandler(object sender, SmtpSendResponse theResponse);

public class SmtpSendResponse : IDisposable
{
    #region Private Members

    private MailMessage _theMessage;
    private bool _isSuccess;
    private string _errorMessage;

    #endregion

    #region Public Properties

    public MailMessage TheMessage
    {
        get { return _theMessage; }
        set { _theMessage = value; }
    }

    public bool IsSuccess
    {
        get { return _isSuccess; }
        set { _isSuccess = value; }
    }

    public string Error
    {
        get { return _errorMessage; }
        set { _errorMessage = value; …
Run Code Online (Sandbox Code Playgroud)

c# memory memory-leaks smtp mailmessage

5
推荐指数
1
解决办法
313
查看次数

通过TFS工作项SDK设置工作量估算

我想使用SDK在TFS中创建一个新的工作项,我想设置项目的工作量估算.我的代码目前看起来像这样

    var coll = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://galaxy:8080/tfs/crisp"));

    var workItemService = coll.GetService<WorkItemStore>();

    var parent = workItemService.GetWorkItem(parentWorkItemId);

    WorkItemType workItemType =parent.Project.WorkItemTypes
            .Cast<WorkItemType>()
            .First(candidateType => candidateType.Name.Equals("Task"));



    WorkItem item = workItemType.NewWorkItem();
    item.Title = work.Name;


    //Set effort estimate here

    workItemService.BatchSave(new WorkItem[]{ item });
Run Code Online (Sandbox Code Playgroud)

但是WorkItem的界面似乎没有任何东西允许我设置工作量估算.有谁知道这是怎么做的?

.net tfs tfs-sdk

5
推荐指数
1
解决办法
1715
查看次数

用于信号处理的C++库

我在matlab编写了一个研究项目,它使用了很多我不想在C++中重新实现的函数,所以我正在寻找库来处理这些问题.我需要的功能是:(按重要性顺序)

  1. 希尔伯特变换
  2. 矩阵函数(行列式,逆,乘......)
  3. 寻找多项式的根(度数大于5)
  4. FFT
  5. 卷积
  6. 相关性(matlab中的xcorr)

c++ math matlab signal-processing

5
推荐指数
1
解决办法
2757
查看次数

指针,字符串和溢出错误

我是C++和编程的新手,我正在编写一个小程序作为一个任务的一部分,并让它工作,但我试图让代码运行得更快,所以我试图让我的向量存储指针到一个结构.

结构是

struct info {
    string all;
    string word;
}
Run Code Online (Sandbox Code Playgroud)

而我所做的是,尝试将字符串'all'赋值为一个值;

info* v;
v->all = str;
Run Code Online (Sandbox Code Playgroud)

str定义为

string str = "Hello";
Run Code Online (Sandbox Code Playgroud)

我在运行GDB时遇到的错误是;

File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
OverflowError: signed integer is greater than maximum
Run Code Online (Sandbox Code Playgroud)

有什么可能导致这个的任何线索?

c++ string overflow

5
推荐指数
1
解决办法
2444
查看次数

如何修改通过值传递的原始变量的内容?

有一个现有的API函数,它只允许插件(DLL)接收三个参数并执行一些操作:

int ProcessMe(int nCommand, unsigned int wParam, long lParam);
Run Code Online (Sandbox Code Playgroud)

现在,从主程序(exe),想将两个变量传递给插件,并要求插件修改其内容,主程序将再次读取它们,以执行某些任务.

我的问题是,从上面的函数,我可以执行此操作,而无需更改函数参数吗?

例:

int ProcessMe(int nCommand, unsigned int wParam, long lParam)
{
  // modify the parameters//
  return 0;
}

int main()
{
  BOOL bSave = TRUE;
  int nOption = 0;
  ProcessMe(0, (unsigned int)(&bSave), (long)(&nOption));
  if(FALSE==bSave)
    printf("bSave is modified!");
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

c c++ api parameter-passing

5
推荐指数
1
解决办法
299
查看次数

两个排序数组中最近的对总和

鉴于整数两个排序阵列,a并且b,和一个整数c,我一定要找到i,j这样的:

a[i] + b[j] <= c
Run Code Online (Sandbox Code Playgroud)

并且a[i] + b[j]尽可能大.

我能想到的最好的解决方案是在O(n log n)时间内,从第一个数组获取每个整数并找到" c-a[i]" 的下限.
任何人都可以建议我更好的方法(可能在O(n)时间)?

c arrays algorithm

5
推荐指数
1
解决办法
1424
查看次数

计算相交矩形的周长和面积?

我搜索了很多,但我没有找到适合这种情况的好答案.我们有一些水平或垂直的矩形.它们可以随机放在页面上.它们可以重叠或具有共同边缘或彼此分开.我想找到一个带有O(nlogn)的算法,它可以找到这些矩形的周长和面积.这些图片可能会使问题变得清晰.

在此输入图像描述

我认为间隔树可能有所帮助,但我不确定如何.

algorithm tree intervals

5
推荐指数
1
解决办法
5091
查看次数

步入dll不可能(pdb可用)

我有一个包含许多项目的解决方案,其中一些位于解决方案路径之外(我将已编译的dll和pdb复制为带有xcopy的Post-build事件)!

如果我想进入dll,它们位于我的解决方案之外:

"断点当前不会被命中.没有为此文档加载符号"

  • 所有文件(dll的+ pdb的+ exe)都在同一目录中
  • 源文件位于不同的位置
  • 步入内部dll是可能的

需要哪些步骤才能调试外部dll?

debugging dll visual-studio visual-studio-2012

5
推荐指数
1
解决办法
3623
查看次数

IList <T> .AsReadOnly扩展方法不适用于引用类型集合

以下是示例代码:Readonly扩展不适用于引用类型集合.如果我将Employee更改为字符串然后它将工作.有人可以解释为什么我会得到这种行为.

        List<Employee> Emps = new List<Employee>(2)
        {
            new Employee(){EmpName="E1",Year=2012,EmpID=1},
            new Employee(){EmpName="E2",Year=2012,EmpID=2}
        };
        Emps.ForEach(emp => Debug.WriteLine(emp.EmpName));
        **IList<Employee> readonlyEmp = Emps.AsReadOnly();
        readonlyEmp[0].EmpName = "EMPUpdated";**
        foreach (var emp in readonlyEmp)
        {
            Debug.WriteLine(emp.EmpName);
        }
Run Code Online (Sandbox Code Playgroud)

c# readonly

4
推荐指数
1
解决办法
573
查看次数