小编Doc*_*own的帖子

WinForms:找到最小化表单的大小而不使用FormWindowState.Normal

是否有一种简单的方法来确定它在WindowState = Normal中具有的Form的大小,而不实际更改Form状态?

这是我现在做的(C#代码):

public class MyForm: Form
{
     public void MyMethod()
     {
          // ...
          FormWindowState oldState = this.WindowState;
          this.WindowState = FormWindowState.Normal;

          Point windowLocation = this.Location;
          Size windowSize = this.Size;

          this.WindowState = oldState;
          //  ...
     }
}
Run Code Online (Sandbox Code Playgroud)

这就是我希望代码看起来像:

public class MyForm: Form
{
     public void MyMethod()
     {
          // no state change here
          Point windowLocation = this.NormalStateLocation;
          Size windowSize = this.NormalStateSize;
     }
}
Run Code Online (Sandbox Code Playgroud)

事实上,Windows窗体中没有NormalStateLocationNormalStateSize属性.

.net c# winforms

5
推荐指数
2
解决办法
3124
查看次数

单元测试和编码设计

在很多TDD教程中,我看到这样的代码:

public class MyClass
{
    public void DoSomething(string Data)
    {
      if (String.IsNullOrWhiteSpace(Data))
        throw new NullReferenceException();
    }
}


[Test]
public DoSomething_NullParameter_ThrowsException()
{
   var logic = MyClass();

   Assert.Throws<NullReferenceException>(() => logic.DoSomething(null));
}
Run Code Online (Sandbox Code Playgroud)

这一切都有意义,但在某些时候你将会到达实际使用MyClass的类,并且你想测试异常是否被处理:

public class EntryPointClass
{
  public void DoIt(string Data)
  {
     var logicClass = new MyClass();

     try
     {
        logicClass.DoSomething(Data);
     }
     catch(NullReferenceException ex)
     {

     }
  }
}

[Test]
public DoIt_NullParameter_IsHandled()
{
  var logic = new EntryPointClass()

  try
  {
    logic.DoIt(null);
  }
  catch
  {
    Assert.Fail();
  }
}
Run Code Online (Sandbox Code Playgroud)

那么为什么不把my/class中的try/catch放在首先,而不是抛出异常,并在MyClass单元测试类中测试为null,而不是在EntryPointClass单元测试类中?

.net c# unit-testing design-patterns

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

nmake中的foldername和文件名的连接

我有一个包含宏中文件列表的Nmake Makefile:

MYSRCFILES1=myfolder\file1.svg myfolder\file2.svg ... myfolder\file99.svg
Run Code Online (Sandbox Code Playgroud)

和第二个就像这样:

MYSRCFILES2=myfolder2\file1.svg myfolder2\file2.svg ... myfolder2\file99.svg
Run Code Online (Sandbox Code Playgroud)

我正在尝试的是避免重复文件列表,并避免重复文件夹名称,如下所示:

MYSRCFILES0=file1.svg file2.svg file3.svg

MYSRCFILES1="prepend 'myfolder\' to each element of $(MYSRCFILES0)"

MYSRCFILES2="prepend 'myfolder2\' to each element of $(MYSRCFILES0)"
Run Code Online (Sandbox Code Playgroud)

通过Nmake的文档挖掘自己到目前为止我还没有找到解决方案.知道怎么做到这一点?

nmake makefile

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

根据列宽跨多行拆分文本

我在Excel VBA中有一个报告生成器,到目前为止一直有效.它读取一些输入数据并生成格式化的Excel工作表作为结果.本表的最后一列填充了某种自由文本.

现在,有时自由文本不适合最后一列,它太宽了.由于此报告的所有行的行高都是固定的,因此我无法range.WrapText=True为此列设置(要让文本保持可见,必须增加行高).手动(非VBA)解决方案很简单:将文本分成几个部分并将其分布在不同的行上.例如:

A          | B               |C
content    |This text is too wide for column B.
here       |This text fits.  |
is         |                 |
fixed      |                 |
Run Code Online (Sandbox Code Playgroud)

应该转化为

A          | B               |C
content    |This text is too |
here       |wide for column  |
is         |B.               |
fixed      |This text fits.  |
Run Code Online (Sandbox Code Playgroud)

如果我能够使用VBA确定B列中内容的实际文本宽度(使用比例字体!),我可以轻松编写代码.range.ColumnWidth给出了列的实际宽度,但我不知道如何确定"此文本对于列B来说太宽".在VBA中.有什么建议?

(我目前正在使用Excel 2002/XP).

excel vba

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

找到DataGridView单元格

如何在DataGridView中找到具有特定内容的单元格?

c# datagridview winforms

2
推荐指数
1
解决办法
3749
查看次数