小编Pon*_*dum的帖子

强制WinForms重新生成.designer.cs文件

我们有一个控件项目,其中包含许多应用程序中使用的控件.这些控件上有许多旧的和多个冗余属性,并且几乎没有一个属性具有指定的属性(例如DefaultValue()特别是).

作为清理它们的努力的一部分,我们已经为属性添加了属性,并且正在寻找删除多余的属性.

我们想要做的是从winforms设计器(xxxxxx.designer.csxxxxxx.designer.vb文件)中清除生成的代码.一些属性是直接删除,我们可以使用Grep和Sed来删除有问题的行,但我们正在寻找一种方法来使Visual Studio(或其他东西)重新生成文件.

由于我们有100个表单,因此手动打开每个表单并对其进行修改是不可行的.

有谁知道这样做的方法?

编辑:

澄清一下,我的意思是不是立即删除属性,而是将DesignerSerializationVisibity()属性应用于它们以告诉设计者不要写它们.然后,一旦我们更新了所有设计器文件,我们就可以删除属性.

也可以看看:

自动重新生成设计器文件

c# visual-studio winforms

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

如何用C#(或VB.NET)编写WinMerge插件

我想编写一个WinMerge插件来将SQLite数据库转换为文本,因此我可以使用WinMerge来比较数据库.

我已用C#编写代码来进行转换,但我似乎无法将其显示为WinMerge插件.但是我对编写COM可见的.NET对象并不是很熟悉.

我想我不能放入正确的COM属性(我只是把ComVisible(true)放在类上).但是,我认为VB.Net应该为你做所有的事情,所以我在VB.Net中重写了类,使用Project/Add New/COM类.但是,它仍然不会作为加载的插件出现在WinMerge中.

无奈之下,我尝试使用DLL导出查看器查看VB DLL,但它没有显示任何导出的函数.我显然做错了什么.

这是完整的代码:

<ComClass(WinMergeScript.ClassId, WinMergeScript.InterfaceId, WinMergeScript.EventsId)> _
Public Class WinMergeScript

#Region "COM GUIDs"
    ' These  GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "9b9bbe1c-7b20-4826-b12e-9062fc4549a0"
    Public Const InterfaceId As String = "b0f2aa59-b9d0-454a-8148-9715c83dbb71"
    Public Const EventsId As String = "8f4f9c82-6ba3-4c22-8814-995ca1050de6"
#End Region

    Dim _connection As SQLite.SQLiteConnection
    Dim _output As IO.TextWriter
    Dim …
Run Code Online (Sandbox Code Playgroud)

c# vb.net plugins winmerge

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

如何将一个图形对象复制到另一个

我试图将一个图形对象的内容复制到另一个图形对象,但我唯一能够找到的是基于使用GDI32.DLL,我宁愿避免使用,如果可能的话.

有谁知道如何使用托管代码这是否可行?我不介意答案是在C#或VB.Net中.

这是我目前拥有的:

Private Sub CopyGraphics()
    Dim srcPic As Graphics = pnl.CreateGraphics

    Dim srcBmp As New Bitmap(pnl.Width, pnl.Height, srcPic)
    Dim srcMem As Graphics = Graphics.FromImage(srcBmp)

    Dim HDC1 As IntPtr = srcPic.GetHdc
    Dim HDC2 As IntPtr = srcMem.GetHdc

    BitBlt(HDC2, 0, 0, pnl.Width, pnl.Height, HDC1, 0, 0, 13369376)

    pnlDraw.BackgroundImage = srcBmp

    'Clean Up code omitted...
End Sub
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net graphics gdi+

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

Graphics.MeasureString允许太多的空格

我正在使用一个函数来调用一段文本在一个区域内呈现.该功能的基本工作是:

Dim measureSize as Size
Do
    myFont = new Font(myFont.Name, myFont.Size - 1, FontStyle.Regular, GraphicsUnit.Document)
    'Initial font size is set insanely high for the moment, during testing.
    'Low initial font size is not the problem.
    measureSize = g.MeasureString(myString, myFont)
Loop until (measuredSize.width < desiredSize.width AND measuredSize.height < desiredSize.height)
Run Code Online (Sandbox Code Playgroud)

这个问题是MeasureString在它绘制的字符串周围添加了很多空格,而最终的字体渲染得太小了.

我确定我记得一个可以摆弄的参数,以便从MeasureString方法中删除所有填充,但我的搜索目前还没有出现任何问题.

有没有人知道如何使用MeasureString来测量字符串的EXACT大小而没有任何边界?

.net gdi

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

使用Forms Load Event将字符串写入面板

我试图DrawString()在面板(panel1)上使用方法绘制一个字符串.我想在form(Form1)加载时发生这种情况.但这不会发生.但是如果我在click事件处理程序中使用相同的代码(如下所示),则会绘制字符串panel1.我在哪里做错了?

    private void Form1_Load(object sender, EventArgs e)
    {

        /*string rand = getRandomString();
        textBox1.Text = rand;*/
        string rand = "Hello";
        SolidBrush sbr = new SolidBrush(Color.Black);
        Graphics g = panel1.CreateGraphics();
        FontFamily fam = new FontFamily("Magneto");
        Font font = new System.Drawing.Font(fam, 24, FontStyle.Bold);
        g.DrawString(rand, font, sbr, new Point(20, 20));
    }   
Run Code Online (Sandbox Code Playgroud)

.net c# gdi winforms

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

C#局部变量

有人可以解释我为什么得到:

"使用未分配的局部变量number_of_column":if(i <number_of_column -1)

什么是处理这个问题的最佳方法?

static void Main(string[] args)
{ 
    int number_of_column;
    if (Directory.Exists(path))
    {
        var file = dir.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
        string file1 = file.ToString();
        Console.WriteLine(file1);
        StreamReader sr = new StreamReader(path + "\\" + file1);
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            if (start == true)
            {
                string[] line1 = line.Split(',');
                number_of_column = line1.Count();
                i = 0;
                foreach (string s in line1)
                {
                    if ((s != "0") || (!string.IsNullOrEmpty(s)))
                    {
                        col[i] = "checked";

                    }
                    i++;
                }
            }
            else …
Run Code Online (Sandbox Code Playgroud)

c# variables local

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

如果没有完整的.net框架安装,msbuild 14将无法运行

我有一个带有visual studio 2010和多个构建目标的构建机器.我使用的所有其他目标按预期工作,由于某种原因,.net 4.6.1版本14的新版本不起作用.

当我从命令行执行构建时,我收到以下错误:

C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1097,5):警告MSB3644:找不到框架".NETFramework,Version = v4.6.1"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

有人可以向我解释如何解决它吗?

c# msbuild-14.0 .net-4.6.1

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

在C#中使用Stream Writer使文本变粗

如何使用流编写器使文本变粗,这是我的代码:

 string path = Application.StartupPath + "\\WZ.PNR";
 StreamWriter writer = new StreamWriter(path);
 textPrint.ToText(writer, Width, FSection, FAlign, DSection, DAlign, Format);
 writer.WriteLine();                   
 writer.Close();
Run Code Online (Sandbox Code Playgroud)

我正在写一些文字,我需要做一些文字BOLD,怎么做?

谢谢

c# c#-2.0

0
推荐指数
1
解决办法
7570
查看次数