小编cae*_*say的帖子

如何在WinForms中控制对接顺序

正如标题所述,我正在寻找一种方法来控制物品停靠在我控制之上的顺序.

我和Windows窗体设计师一起玩过,我似乎无法找到RightClick->Order->SendToFront正在做的事情,因为这正是我想要发生的事情.至于我可以发生的事情,当我将我的内容添加到我的控件中时,最新的内容始终位于顶部,我希望新的内容位于底部,最旧的内容位于最佳.

简介:在WinForms(C#)中有一种简单的方法来控制事物停靠在控件两侧的顺序吗?

编辑:我必须从后面的代码执行此操作,因为我添加我的控件,我不能使用WinForm的设计器的任何功能,但我想要做的,是模仿WinForms设计器SendToBackSendToFront功能

c# docking winforms

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

在C#中查找更大字符串中子字符串的所有位置

我有一个需要解析的大字符串,我需要查找所有实例extract"(me,i-have lots. of]punctuation,并将每个的索引存储到列表中.

所以说这条字符串位于较大字符串的开头和中间,它们都会被找到,并且它们的索引会被添加到字符串中List.而List将包含0与其他指数不管它是.

我一直在玩弄和string.IndexOf几乎就是我正在寻找的,我已经写了一些代码-但它不工作,我一直无法弄清楚到底什么是错的:

List<int> inst = new List<int>();
int index = 0;
while (index < source.LastIndexOf("extract\"(me,i-have lots. of]punctuation", 0) + 39)
{
    int src = source.IndexOf("extract\"(me,i-have lots. of]punctuation", index);
    inst.Add(src);
    index = src + 40;
}
Run Code Online (Sandbox Code Playgroud)
  • inst =清单
  • source =大字符串

有更好的想法吗?

.net c# asp.net string

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

正确的方式(在.NET中)将焦点切换到另一个应用程序

这是我到目前为止:

    Dim bProcess = Process.GetProcessesByName("By").FirstOrDefault
    If bProcess IsNot Nothing Then
        SwitchToThisWindow(bProcess.MainWindowHandle, True)
    Else
        Process.Start("C:\Program Files\B\B.exe")
    End If
Run Code Online (Sandbox Code Playgroud)

它有两个问题.

  1. 有些人告诉我,SwitchToThisWindow已被删除.
  2. 如果应用程序B被最小化,则从用户的角度来看,此功能无声地失败.

那么这样做的正确方法是什么?

.net pinvoke process

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

有没有一种简单的方法可以将对象属性转换为字典<string,string>

我有一个数据库对象(一行),它有许多映射到表单字段的属性(列)(asp:textbox,asp:dropdownlist等).我想将此对象和属性转换为字典映射,以便更容易迭代.

例:

Dictionary<string, string> FD = new Dictionary<string,string>();
FD["name"] = data.name;
FD["age"] = data.age;
FD["occupation"] = data.occupation;
FD["email"] = data.email;
..........
Run Code Online (Sandbox Code Playgroud)

如果不手动输入所有100种属性,我怎么能这么做呢?

注意:FD字典索引与数据库列名称相同.

c# asp.net reflection dictionary

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

无论类型如何,比较两个整数对象的相等性

我想知道如何比较两个盒装整数(可以是有符号或无符号)以保证相等.

例如,看看这个场景:

// case #1
object int1 = (int)50505;
object int2 = (int)50505;
bool success12 = int1.Equals(int2); // this is true. (pass)

// case #2
int int3 = (int)50505;
ushort int4 = (ushort)50505;
bool success34 = int3.Equals(int4); // this is also true. (pass)

// case #3
object int5 = (int)50505;
object int6 = (ushort)50505;
bool success56 = int5.Equals(int6); // this is false. (fail)
Run Code Online (Sandbox Code Playgroud)

我很难理解如何以这种方式可靠地比较盒装整数类型.直到运行时我才会知道它们是什么,我不能把它们都放到long,因为一个可能是一个ulong.我也不能将它们都转换成两者,ulong因为一个可能是负面的.

我能想到的最好的想法就是试错,直到找到一个普通类型或者可以排除它们不相等,这不是一个理想的解决方案.

.net c# math boxing

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

谈判了哪个TLS版本?

我的应用程序在.NET 4.7中运行.默认情况下,它将尝试使用TLS1.2.是否有可能知道在执行时协商了哪个TLS版本,例如,如下所示的HTTP请求?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(decodedUri);
if (requestPayload.Length > 0)
{
    using (Stream requestStream = request.GetRequestStream())
    {
        requestStream.Write(requestPayload, 0, requestPayload.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

我只需要这些信息用于记录/调试,因此在写入请求流或接收响应之前获取此信息并不重要.我不希望解析此信息的网络跟踪日志,我也不想创建第二个连接(使用SslStream或类似的连接).

.net c# ssl

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

编译并运行动态代码,而不生成EXE?

我想知道是否可以编译,并运行存储的代码,而不生成exe或任何类型的其他文件,基本上从内存中运行该文件.

基本上,Main应用程序将有一些存储代码(可能会更改的代码),并且需要编译代码并执行它.没有创建任何文件.

创建文件,运行程序,然后删除文件不是一个选项.编译后的代码需要从内存中运行.

代码示例,或指针,或几乎任何东西都欢迎:)

c# runtime-compilation

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

从非托管进程卸载.NET DLL

我正在扩展我的Inno-Setup脚本,其中包含我最好在托管DLL中的C#中实现的代码.我已经知道如何从托管DLL导出方法作为在非托管进程中使用的函数.它可以通过IL编织来完成,并且有一些工具可以实现自动化:

因此,在导出后,我可以在Inno-Setup安装程序中从Pascal脚本调用我的函数.但是有一个问题:DLL似乎不再被卸载了.使用Inno-Setup UnloadDLL(...)无效,文件将保持锁定状态,直到安装程序退出.因此,安装程序等待2秒,然后无法从临时目录(或安装目录)中删除我的DLL文件.事实上,它确实存在,直到有人清理驱动器.

我知道无法再从AppDomain卸载托管程序集,除非整个AppDomain关闭(进程退出).但是对于非托管主机进程意味着什么呢?

是否有更好的方法允许Inno-Setup在加载和使用后卸载或删除我的DLL文件?

.net c# com inno-setup unmanaged

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

PHP中的C#类扩展方法?

我喜欢在C#中编写扩展方法的方式,然后执行以下操作:

string ourString = "hello";
ourString.MyExtension("another");
Run Code Online (Sandbox Code Playgroud)

甚至

"hello".MyExtention("another");
Run Code Online (Sandbox Code Playgroud)

有没有办法在PHP中有类似的行为?

php c#

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

在C#中设置模块化程序的最佳方法

我的朋友和我正在编写一个IRC C#bot,我们正在寻找一种包含模块系统的方法,以便用户可以编写自定义模块来扩展功能.

机器人使用Regex从服务器中分离所有原始数据,然后使用数据触发相应的事件.例如,典型的事件处理程序可能如下所示:

OnChannelMessage(object sender, ChannelMessageEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)

In ChannelMessageEventArgs将是频道名称,发送者的昵称,消息等...

我想拥有一个插件系统,以便人们可以随意构建模块并加载/卸载它们,当机器人加载时,或者运行时.

理想情况下,我希望能够动态编译.cs文件,并在plugin.cs文件中,将是一些事情:

  1. 要捕获的事件,例如OnChannelMessage和OnChannelEventArgs中的Channeldata
  2. 给出这些信息后该怎么办
  3. 一个帮助文本(我可以从主机器人内部调用..所以说一个字符串,帮助="这是这个插件的帮助",可以随时返回,而无需实际调用插件)
  4. 插件名称是什么等

感谢您对于在编程方面相对较新的人的起点.

.net c# module

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