如何创建没有GUI或设计器附件的WinForms用户控件?一个例子就像定时器控件,它放在你的表单上,它停靠在底部,但没有任何GUI控件?
伙计们,我知道这将是一个简单的答案,但我似乎无法弄明白.我有一个C#Winform应用程序,我正在尝试构建.我试图在表格底部上方60像素处绘制一条白线.我正在使用此代码:
private void MainForm_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.White, 10, this.Height-60, 505, this.Height-60);
}
Run Code Online (Sandbox Code Playgroud)
很简单,但没有绘制线.经过一些调试后,我发现它正在画线,但它正在我的表格之外.如果我将-60更改为-175,那么我可以在表单底部看到它.这将解决我的问题,除非我的表格的高度发生变化,线条越来越接近我的表格底部,直到最终,它再次脱离形式.我究竟做错了什么?我使用错误的图形单元吗?或者,我需要做一个更复杂的计算来确定表格底部的60个像素?
我试图使用多个线程写入大文件的不同部分,就像分段文件下载器一样.
我的问题是,这样做的安全方法是什么?我是否打开文件进行编写,创建我的线程,将Stream对象传递给每个线程?我不希望发生错误,因为多个线程可能同时访问同一个对象.
这是C#的方式.
这似乎是一个明显的答案,但我似乎无法找到答案.我在VB.NET中有这个代码:
Public Interface ITestInterface
WriteOnly Property Encryption() As Boolean
End Interface
Run Code Online (Sandbox Code Playgroud)
我在VB.NET中也有这个类和实现:
Partial Public Class TestClass
Implements ITestInterface
Public WriteOnly Property EncryptionVB() As Boolean Implements ITestInterface.Encryption
Set(ByVal value As Booleam)
m_Encryption = value
End Set
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
我试图将其转换为C#.我把C#接口转换得很好,就像这样:
public interface ITestInterface
{
bool Encryption { set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是,如何将实现转换为.我有这个:
public partial class TestClass
{
public bool Encryption
{
set { m_Encryption = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于,在C#中,您似乎必须将该函数命名为与您正在实现的接口函数相同的名称.如何调用此方法EncryptionVB而不是Encryption,但仍然实现加密属性?
我有一个带有丰富文本框控件的表单.有没有办法在富文本框控件具有焦点时启用大写锁定?如果富文本框失去焦点,请将其关闭?我正在使用C#
有没有一种简单的方法将布尔值数组转换为8位十六进制等效值?例如,如果我有
bool[] BoolArray = new bool[] { true,false,true,true,false,false,false,true };
Run Code Online (Sandbox Code Playgroud)
如果true值= 1且false值= 0,那么我想要一个将上面的数组转换为0xB1(10110001)的方法或函数.
是否存在这样的功能或方法?顺便说一句,我正在使用C#.
请考虑以下代码:
var myDict = new Dictionary<string, int>();
myDict.Add("Key1", 1);
myDict.Add("Key2", 2);
myDict.Add("Key4", 4);
myDict.Add("Key5", 5);
foreach (KeyValuePair<string, int> pair in myDict)
{
Console.Write(pair.Key + @" --> ");
Console.WriteLine(pair.Value);
}
myDict.Add("Key3", 3);
foreach (KeyValuePair<string, int> pair in myDict)
{
Console.Write(pair.Key + @" --> ");
Console.WriteLine(pair.Value);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是插入"Key3"之间"Key2"和"Key4".为简单起见,我以此为例.我知道我可以使用SortedDictionary,我可以让这个例子起作用.我需要能够具体做的是,每当我在字典中插入一个新元素时,我总是希望它在第二个元素之后和第三个元素之前插入它.我怎么能做到这一点?
我在我的网页中使用jQuery Multiselect作为几个下拉列表.它工作正常,但是,我的一个下拉列表在UpdatePanel内部并且它进行回发.回发是必要的,因为第二个下拉列表中的数据是根据用户在第一个下拉列表中选择的内容填充的.
在做回发后,jQuery Multiselect似乎不允许我从下拉列表中选择任何内容.如果下降,但我无法点击任何东西.
这似乎是一个已知的错误,但链接中讨论的解决方案似乎并没有解决我的问题.这是我正在使用的一些代码:
...
<div style="margin-left: 23px">
<asp:UpdatePanel runat="server" ID="pnlAdvertiserReportsAdvertiserByHostSitesHostCities">
<ContentTemplate>
<div style="display: inline-table"><asp:DropDownList runat="server" ID="ddlAdvertiserReportsAdvertiserByHostSitesStates" AutoPostBack="True" OnSelectedIndexChanged="ddlAdvertiserReportsAdvertiserByHostSitesStates_SelectedIndexChanged"></asp:DropDownList></div>
<div style="display: inline-table"><asp:DropDownList runat="server" ID="ddlAdvertiserReportsAdvertiserByHostSitesCities"></asp:DropDownList></div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
...
...
<script type="text/javascript">
$('#<%= ddlAdvertiserReportsAdvertiserByHostSitesStates.ClientID %>').multiselect({
multiple: false,
header: false,
noneSelectedText: false,
selectedList: 1,
minWidth: 170
});
$('#<%= ddlAdvertiserReportsAdvertiserByHostSitesCities.ClientID %>').multiselect({
multiple: false,
header: false,
noneSelectedText: false,
selectedList: 1,
minWidth: 170
});
...
...
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
$('#<%= ddlAdvertiserReportsAdvertiserByHostSitesStates.ClientID %>').multiselect({
multiple: false,
header: false, …Run Code Online (Sandbox Code Playgroud) 我有这样一张桌子:
|---------|-----|
| Name | Qty |
|---------|-----|
| Joe | 3 |
| Bill | 2 |
| Mike | 4 |
|---------|-----|
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个SELECT将返回此语句的语句:
|--------|
| Name |
|--------|
| Joe |
| Joe |
| Joe |
| Bill |
| Bill |
| Mike |
| Mike |
| Mike |
| Mike |
|--------|
Run Code Online (Sandbox Code Playgroud)
基本上,无论Qty字段设置为什么,Name返回的次数.我在这里发现了一个非常相似的问题,但这个问题适用于Oracle而我正在使用SQL Server.我也希望在一个SELECT语句中执行此操作(因为它稍后将在视图中使用),而不是必须使用临时表或游标.
我对一些不应该工作的代码感到困惑,但奇怪的是,工作正常,我知道我只是忽略了一些明显的东西.我正在查看Accord.NET框架的源代码,我下载了它并且编译得很好,但我对某些事感到困惑.在其中一个程序集中,名为Accord.Math的文件名为Indices.cs.这是定义:
internal static class Indices
{
// Lots of code
// ...
// ...
}
Run Code Online (Sandbox Code Playgroud)
你可以在第35行看到这个.
在另一个名为Accord.Statistics的程序集中,有一个名为Tools.cs的文件.在该文件中,有这一行:
return Accord.Math.Indices.Random(k, n);
Run Code Online (Sandbox Code Playgroud)
你可以在329行看到这个.
我很困惑这条线如何引用Accord.Math.Indices该类,因为它被标记为internal.我的理解是标记为的类internal只能由驻留在同一DLL文件中的类访问.有人可以解释这是如何工作的吗?
c# ×8
.net ×6
winforms ×2
accord.net ×1
asp.net ×1
binary ×1
boolean ×1
dictionary ×1
file ×1
gdi+ ×1
interface ×1
jquery ×1
multi-select ×1
richtextbox ×1
sql ×1
sql-server ×1
updatepanel ×1
vb.net ×1