小编Wol*_*ich的帖子

如何配置应用程序以在具有高DPI设置(例如150%)的计算机上正确运行?

我在C#中创建了一个简单的Winforms应用程序.当我在具有高DPI设置(例如150%)的计算机上运行应用程序时,应用程序会按比例放大.到现在为止还挺好!但是,不是使用更高的字体大小渲染字体,所有文本也只是按比例放大.这当然导致非常模糊的文本(在按钮等所有控件上).

窗户不应该正确地渲染文本吗?例如,我的应用程序的标题栏呈现清晰明了.

c# fonts dpi winforms dpi-aware

86
推荐指数
4
解决办法
4万
查看次数

创建DPI感知应用程序

我在C#中有一个表单应用程序.当我更改显示器的DPI时,所有控件都会移动.我使用了代码this.AutoScaleMode = AutoScaleMode.Dpi,但它没有避免这个问题.

有没有人有想法?

c# dpi dpi-aware

67
推荐指数
4
解决办法
8万
查看次数

单击一次 - 所有用户

如何配置click-once以便为所有用户安装应用程序.在另一个论坛上,我得"使用MSI" - 谢谢 - 但是如何.此外,第一个安装用户可能不是管理员 - 这可能是一个问题.我希望所有用户都能触发更新检查.没有本地存储,它是WCF服务的WPF客户端.

我们是XP,内部.

.net clickonce windows-installer

21
推荐指数
2
解决办法
3万
查看次数

使用函数定义可选参数

是否可以使用函数的返回值而不是特定值作为函数中的可选参数?例如,而不是:

public void ExampleMethod(int a, int b, int c=10)
{
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

private int ChangeC(int a, int b)
{
    return a+b;
}

public void ExampleMethod(int a, int b, int c=ChangeC(a,b))
{
}
Run Code Online (Sandbox Code Playgroud)

c# optional-parameters

8
推荐指数
2
解决办法
249
查看次数

将具有多个项目和 svn 外部的 SVN 存储库迁移到 git

我知道如何迁移具有以下结构的 SVN 存储库

SVN Repo1
  + trunk
  + branches
  + tags
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令

git svn clone svn://hostname/Repo1/ --prefix=svn/ --no-metadata --authors-file "authors-transform.txt" --stdlayout c:\mytempdir
Run Code Online (Sandbox Code Playgroud)

请参阅https://learn.microsoft.com/en-us/azure/devops/repos/git/perform-migration-from-svn-to-git/sf/answers/278047241/

但是当我的 SVN 存储库具有以下结构时

SVN Repo2
  + Project1
      + trunk
      + branches
      + tags
  + Project2
      + trunk
          + Project1 <-- external to ^/Project1/trunk
      + branches
      + tags
  + Project3
      + trunk
          + Project1 <-- external to ^/Project1/trunk
      + branches
      + tags
Run Code Online (Sandbox Code Playgroud)

我不知道如何将其转换为 git。

我应该将每个项目迁移到 吗Repo2?在这种情况下,svn 外部会丢失。或者有什么办法可以让这个洞迁移Repo2吗?

备注:SVN 客户端用户只是签出Project2 …

svn windows git version-control git-svn

8
推荐指数
1
解决办法
537
查看次数

具有超过 65535^2 个元素的二维数组 --&gt; 数组维度超出支持范围

我有一台带有 128 GB RAM 的 64 位 PC,我使用的是 C# 和 .NET 4.5。我有以下代码:

double[,] m1 = new double[65535, 65535];
long l1 = m1.LongLength;

double[,] m2 = new double[65536, 65536]; // Array dimensions exceeded supported range
long l2 = m2.LongLength;
Run Code Online (Sandbox Code Playgroud)

我知道<gcAllowVeryLargeObjects enabled="true" />并且我已将其设置为 true。

为什么多维数组不能有超过 4294967295 个元素?我看到以下答案/sf/answers/163715821/

我还检查了gcAllowVeryLargeObjects的文档,我看到了以下评论。

数组中的最大元素数为UInt32.MaxValue (4294967295)。

我不明白为什么有这个限制?有解决方法吗?是否计划在即将发布的 .net 版本中删除此限制?

我需要内存中的元素,因为我想计算例如使用英特尔 MKL 的对称特征值分解。

[DllImport("custom_mkl", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, SetLastError = false)]
internal static extern lapack_int LAPACKE_dsyevd(
    int matrix_layout, char jobz, …
Run Code Online (Sandbox Code Playgroud)

c# arrays multidimensional-array .net-4.5 gcallowverylargeobjects

7
推荐指数
1
解决办法
2365
查看次数

C#中Datagridview单元格值的验证

我有一个包含datgridview的Windows窗体应用程序.我需要在datagridview单元格上强制执行单元格验证,以便它不接受负值.我从msdn库中找到了合适的代码.

private void dataGridView1_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "";
int newInteger;

// Don't try to validate the 'new row' until finished  
// editing since there 
// is not any point in validating its initial value. 
if (dataGridView1.Rows[e.RowIndex].IsNewRow) { return; }
if (!int.TryParse(e.FormattedValue.ToString(),
    out newInteger) || newInteger < 0)
{
    e.Cancel = true;
    dataGridView1.Rows[e.RowIndex].ErrorText = "the value must be a Positive integer";
}
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,代码只允许在datagridview中输入整数.由于我的列名称为"项目名称",应该作为文本输入,因此代码中存在问题.当我输入项目名称时,它会生成一条错误消息.其余的单元格验证完全正常工作!我该怎么编辑代码,以免它产生这个错误?

提前致谢

Mirfath

c# validation datagridview

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

使用svn external将svn迁移到git

我是git的新手,我现在想离开subversion svn并使用git.是否有任何方法可以将svn移动到git,其所有svn外部与tortoisegit.我尝试过git clone功能,但它不起作用.谢谢.

svn git version-control tortoisegit

6
推荐指数
1
解决办法
3167
查看次数

c# Visual Studio 2017 CPU 分析内存不足异常

我有一个长期运行的 c# 应用程序,我正在 Visual Studio 2017 社区版中对其进行分析。在我停止分析(和应用程序)以查看 CPU 使用率之前运行大约 2/3 小时。但是我可以看到,当它构建报告时,内存使用量增加了 3GB,然后抛出内存不足异常。

Profiling started.
Profiling process ID 7312 (test).
Starting data collection. The output file is C:\Users\jamie\Source\Repos\test(1).vspx
Profiler stopping.
Stopping data collection.
Merging collection data. Please wait...
Data is saved in file C:\Users\jamie\Source\Repos\test(1).vspx
Profiling finished.
Exception of type 'System.OutOfMemoryException' was thrown.
Run Code Online (Sandbox Code Playgroud)

有什么我可以做的来解决这个问题还是我只需要获得更多的内存?

奇怪的是,当它抛出这个时,我机器上的总内存使用量约为 65%,因此它甚至没有使用我所有的内存来构建分析报告。

这是 VS 的全新安装,它具有所有默认设置。

c# performance profiling out-of-memory visual-studio

5
推荐指数
0
解决办法
995
查看次数

SaveFileDialog AddExtension 无法按预期工作

我有以下 C# 代码,它使用 SaveFileDialog并将AddExtension属性设置为true

var dialog = new SaveFileDialog();
dialog.AddExtension = true;
dialog.DefaultExt = "txt";
dialog.Filter = "Text files (*.txt)|*.txt|XML files (*.xml)|*.xml";
dialog.OverwritePrompt = true;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    label1.Text = dialog.FileName;
}
Run Code Online (Sandbox Code Playgroud)

我已经测试了对话框的以下File name组合Save as type

File name       | Save as type   | label1.Text    | What I expect
----------------+----------------+----------------+----------------
test1           | *.txt          | test1.txt      | test1.txt
test2.txt       | *.txt          | test2.txt      | test2.txt
test3.abc       | *.txt          | test3.abc.txt  | …
Run Code Online (Sandbox Code Playgroud)

.net c# mono file-extension savefiledialog

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