小编Ele*_*ios的帖子

VBNET中的(IntPtr)1的等价物?

我从这里的@Hans Passant代码中获取了一段代码:MessageBox中的粗体文本

这是C#代码:

SendMessage(hText, WM_SETFONT, mFont.ToHfont(), (IntPtr)1)
Run Code Online (Sandbox Code Playgroud)

哪个会翻译成vb.net?

这不起作用(无法编译):

SendMessage(hText, WM_SETFONT, mFont.ToHfont(), DirectCast(1, IntPtr))
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net intptr code-translation

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

为Listview列实现一个漂亮的自动调整机制?

我想在AutoResizeListview中添加一个不错的机制,但我不知道该怎么做.

当Form调整大小时,我将最后一列设置为Autoresize selfs:

Private Sub Form1_Resize(sender As Object, e As EventArgs) _
Handles MyBase.Resize

    ColumnDownload.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize)

End Sub
Run Code Online (Sandbox Code Playgroud)

但是这种本机自动调整方法是错误的,因为当我调整应用程序的大小时,会显示水平滚动条:

在此输入图像描述

在此输入图像描述

当然如果我自己用鼠标选择最后一列分隔符来增加列宽,那么我想看/使用水平滚动条,但框架自动调整只是自动增加显示水平滚动条的大小,是如此丑陋和不受欢迎有没有必要调整表单大小时自动显示滚动条!

看起来就像JDownloader和所有不错的程序一样,Autoresize在垂直滚动条的开始处完全停止而不显示丑陋的水平滚动条(如果不需要),例如:

在此输入图像描述

我希望你能理解我的问题.

编辑:

' 魔术解决方案 '如下:

MyColumnHeader.Width = -2
MyColumnHeader.Width = -1
Run Code Online (Sandbox Code Playgroud)

......也一样.在这里看到好文章:http://visualbasic.about.com/od/quicktips/qt/ListViewQT.htm

实际上所有关于在.NET中调整Listview大小的谷歌搜索结果都是使用它,任何比例调整大小或替代,任何体面的自动缩放器,令人难以置信.

.net vb.net listview resize winforms

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

有一个属性来确定是否加载了Form(和它的控件)?

我想澄清一下,我已经知道如何通过设置布尔变量标志(例如:)dim FormIsLoaded as boolean并在表单事件True之后将其设置为来检查是否加载Load了表单,以限制[Enum].Parse导致异常的方法的使用在我的coden.

但这不是我要求的,这不是一个典型的问题,请继续阅读......


我有一个这样的事件处理程序:

''' <summary>
''' Indicates the resulting Batch command redirection.
''' </summary>
Private CommandRedirection As Reg2Bat.CommandRedirection = 
        Reg2Bat.CommandRedirection.Standard

Private Sub KryptonRadioButton_CommandRedirections_CheckedChanged(sender As Object, e As EventArgs) Handles _
        KryptonRadioButton_CommandRedirection_Standard.CheckedChanged,
        KryptonRadioButton_CommandRedirection_Error.CheckedChanged,
        KryptonRadioButton_CommandRedirection_All.CheckedChanged,
        KryptonRadioButton_CommandRedirection_None.CheckedChanged

    If CBool(sender.checked) Then
        CommandRedirection = [Enum].Parse(GetType(CMD.CommandRedirection), 
                                          CStr(sender.tag), True)
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

但是If它给了我一个类型的错误,An unhandled exception of type 'System.InvalidOperationException' occurred in Program.exe我确定发生错误是因为在事件处理程序尝试访问控件的值之前表单没有完全加载.

堆栈跟踪:

en System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult) …
Run Code Online (Sandbox Code Playgroud)

.net vb.net onload-event visual-studio winforms

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

通过OAuth访问imgUr(上传到用户帐户)

为了开始执行这个"简单"的任务,我已经研究了一个程序,我在这里作为一个例子来跟踪并重现这些步骤,程序可以"匿名"上传一个图像:

Private ReadOnly ClientId As String = "My Client ID" ' => "..............."
Private ReadOnly ClientSecret As String = "My Client Secret" ' => "........................................"

' Usage:
' Dim url As String = UploadImage("C:\Image.jpg") : MessageBox.Show(url)
Public Function UploadImage(ByVal image As String)

    Dim w As New WebClient()
    w.Headers.Add("Authorization", "Client-ID " & ClientId)
    Dim Keys As New System.Collections.Specialized.NameValueCollection

    Try

        Keys.Add("image", Convert.ToBase64String(File.ReadAllBytes(image)))
        Dim responseArray As Byte() = w.UploadValues("https://api.imgur.com/3/image", Keys)
        Dim result = Encoding.ASCII.GetString(responseArray)
        Dim reg As New System.Text.RegularExpressions.Regex("link"":""(.*?)""")
        Dim match …
Run Code Online (Sandbox Code Playgroud)

.net vb.net api file-upload imgur

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

将整个调试控制台输出发送到剪贴板?

我想知道在C#VB.NET中,我是否可以随时将所有在IDE调试控制台中写入的输出发送到剪贴板.

vb.net中的伪代码示例:

For x as integer = 0 to integer.maxvalue
    debug.writeline("test console line " & x)
next

Clipboard.SetText(Debug.Output)
Run Code Online (Sandbox Code Playgroud)

我想复制调试控制台的所有行,包括在执行时写的消息,只需要ALL:

WindowsApplication6.vshost.exe'(CLR v4.0.30319:WindowsApplication6.vshost.exe):已加载'C:\ Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.等...测试控制台线1测试控制台线2测试控制台线3等...

我希望也许可以使用DTE(或更容易),任何想法?

.net c# vb.net envdte winforms

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

打包脚本时Ocra会抛出错误

情景

我已经安装了Ruby 2.1.5(x64)包,然后成功安装了Ocra gem:

gem install ocra
Fetching: ocra-1.3.3.gem (100%)
Successfully installed ocra-1.3.3
Parsing documentation for ocra-1.3.3
Installing ri documentation for ocra-1.3.3
Done installing documentation for ocra after 0 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

问题

我正在尝试打包测试脚本:

# -*- coding: UTF-8 -*-

# require ''
exit if Object.const_defined?(:Ocra)

print "Hello World!"
sleep 3

__END__
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用Ocra时,它会抛出错误:

ocra "TestScript.rb"

=== Loading script to check dependencies
=== Detected gem ocra-1.3.3 (loaded, files)
===     6 files, 190931 bytes
=== Detected gem …
Run Code Online (Sandbox Code Playgroud)

ruby scripting packaging compiler-errors ocra

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

在VB.Net中使用LINQ将集合拆分为n个部分

在VB.Net中,如果我有这样的集合:

Dim collection As IEnumerable(Of Integer) = Enumerable.Range(0, 99)
Run Code Online (Sandbox Code Playgroud)

我怎么能把它分成不确定数量的元素的组/ Ienumebles?


条件

使用LINQ查询(不是MORELinq或任何其他第三方库)

不写入Function,只是使用(或附加到集合)LINQ查询,避免插入自定义和通用过程来分割部分.

不生成Anonymous类型(因为我会尊重VB.Net Option语句).


研究

我已经阅读过这些问题,但我无法正确地将C#LINQ查询转换为VB.Net(甚至在线翻译失败并需要进行大量修改):

使用LINQ将集合拆分为`n`部分?

如何将IEnumerable <String>拆分为IEnumerable <string>组

使用LINQ将列表拆分为子列表

将实体集合拆分为n个部分

这些是我尝试从上述SO问题中给出的解决方案中适应的两种不同方法,但是我的翻译不起作用,第一种不能编译,因为Group By和第二种条件不会产生分裂集合,它为每个元素生成一个集合:

1.

    Dim parts As Integer = 4
    Dim i As Integer = 0

    Dim splits As IEnumerable(Of IEnumerable(Of Integer)) =
        From item As Integer In collection
        Group By (Math.Max(Interlocked.Increment(i), i - 1) Mod parts)
        Into Group
        Select Group.AsEnumerable …
Run Code Online (Sandbox Code Playgroud)

.net linq vb.net ienumerable

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

在运行时合并ResX文件?

我正在从代码生成/构建自定义.Net托管资源文件(.resx文件)

C#VB.Net中,我如何设计一个能够将我的自定义.resx文件合并,加入或嵌入到.net程序集中的方法(或多或少与VS编译器默认使用的方式相同)?

所以,一方面我有一个Application.exe(已编译),另一方面我有一个resources.resx,我的意图是将resx"合并"到已编译的程序集中.

任何形式的信息都会感激不尽,因为我没有发现任何相关信息.

PS:唯一的必要条件是不使用ILMerge等第三方工具.

c# vb.net resx visual-studio winforms

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

使用array.resize而不是redim的原因

我知道"redim"比"Array.Resize"更旧,但是不明白将后者用于前者的原因.

.net vb.net arrays

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

从文件中提取特定图标图层,然后将其另存为具有透明度的.ico文件

正如问题的标题所示,我正在尝试从文件中提取特定的图标图层,然后将其保存为具有透明度的ico文件(如源图标所示).

有许多与图标提取相关的问题,但这是我在使用SHDefExtractIcon函数时应用的以下代码所特有的.

我遇到的问题是生成的.ico文件的颜色是错误的,它产生了一种半透明的可怕透明度,另一方面,生成的.png文件被完美保存.

这是生成的PNG文件:

在此输入图像描述

这是生成的ICO文件:

在此输入图像描述

这是Windows API的限制,还是我做错了什么?

C#:

[DllImport("Shell32.dll", SetLastError = false)]
public static extern int SHDefExtractIcon(string iconFile, int iconIndex, uint flags, ref IntPtr hiconLarge, ref IntPtr hiconSmall, uint iconSize);

IntPtr hiconLarge = default(IntPtr);
SHDefExtractIcon("C:\\file.exe", 0, 0, hiconLarge, null, 256);
// ToDO: Handle HRESULT.

Icon ico = Icon.FromHandle(hiconLarge);
Bitmap bmp = ico.ToBitmap();

// Save as .png with transparency. success.
bmp.Save("C:\\ico.png", ImageFormat.Png);

// 1st intent: Save as .ico with transparency. failure. 
//' Transparency is ok but it …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net winapi icons

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