我需要一些C#代码有机会的帮助.假设我有从1到100的循环,并且在该循环中我有一个"if"代码,我想要执行70%(随机).我怎么做到这一点?所以像这样:
static void Main(string[] args)
{
var clickPercentage = 70;
for (int i = 0; i < 100; i++)
{
if (chance)
{
//do 70% times
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,对于顶级示例,我希望如果代码被击中的可能性为70%,对于我的示例大约为70次.
我试过的事情:(远不及70%,更像是1%或2%的几率)
static void Main(string[] args)
{
var clickPercentage = 70;
for (int i = 0; i < 100; i++)
{
var a = GetRadnomNumber(1, clickPercentage);
var b = GetRadnomNumber(1, 101);
if (a <= b)
{
Console.WriteLine($"Iteracija {i} - {b} <= {a}");
}
}
}
public static int GetRadnomNumber(int min, int …
Run Code Online (Sandbox Code Playgroud) 创建文本框的代码......
private void btnAddIncrement_Click(object sender, EventArgs e)
{
SmartTextBox dynamictextbox = new SmartTextBox();
dynamictextbox.BackColor = Color.Bisque;
dynamictextbox.Width = this.tbWidth;
dynamictextbox.Left = (sender as Button).Right + this.lastLeft;
dynamictextbox.K = "Test";
this.lastLeft = this.lastLeft + this.tbWidth;
dynamictextbox.Top = btnAddStart.Top;
this.Controls.Add(dynamictextbox);
}
Run Code Online (Sandbox Code Playgroud)
用于删除所有文本框的代码.
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(BnBCalculator.SmartTextBox))
{
count++;
//MessageBox.Show((c as SmartTextBox).K.ToString());
c.Dispose();
}
// else { MessageBox.Show("not txtbox"); }
}
Run Code Online (Sandbox Code Playgroud)
当我点击btnAddIncrement时,我按预期得到以下内容......
但是当我点击重置时,它会错过每一个文本框.见下文...
不知道这里发生了什么,但无论我添加的文本框怎么样,这都是一样的.它总是错过每一个盒子.
gdi32.dll
在发布Azure Web App之后,尝试对C#中的函数进行一些基本调用,而且我遇到了很多问题.是完全支持还是我可以进行变通/配置更改?
在标准设置的Visual Studio中运行时,下面的指针都返回非零值,但在Azure中运行时它们返回0.
创建了一个基本的ASP.NET Web Forms项目,并添加了Default.aspx
对测试的代码隐藏的打击:
[DllImport("gdi32.dll")]
private static extern IntPtr CreatePen(int enPenStyle, int nWidth, uint crColor);
[DllImport("gdi32.dll")]
private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
[DllImport("gdi32.dll")]
private static extern bool MoveToEx(IntPtr hdc, int X, int Y, IntPtr lpPoint);
[DllImport("gdi32.dll")]
private static extern bool LineTo(IntPtr hdc, int nXEnd, int nYEnd);
[DllImport("gdi32.dll")]
private static extern bool DeleteObject([In] IntPtr hObject);
protected void Page_Load(object sender, EventArgs e)
{
using (Bitmap bitmap = new Bitmap(100, 100))
{
using (Graphics …
Run Code Online (Sandbox Code Playgroud) 在这里,我想,如果 AvailCode 作为 anull
或empty
字符串出现,那么我需要显示它“暂时不可用”。但我的编码没有显示该值。(仅考虑可用代码)。
var _staff = trv.GetBookDetails("4500").Select(b => new
{
value = b.bookno,
text = b.bookname + " " + "/"+" " + b.AvailCode ?? "TemporaryUnavailable",
});
Run Code Online (Sandbox Code Playgroud) 我是C#的新手,我正在使用Windows窗体.
我有Form1
20 buttons
和20 user controls
.我想要做的是:
当我单击button1
user control1
显示并显示其余user controls
隐藏时,单击button2
user control2
显示,其余user controls
隐藏,单击button3
user control3
显示,其余user controls
隐藏,依此类推.我可以通过设置其余部分UserControl.visible = True
来显示一个user control
并隐藏其余部分,user controls visibility = False
但我不想写太多代码.
因此,我使用下面的简单代码只显示一个user control
相关button
的时候点击并隐藏剩下的部分user controls
,但是这个代码没有运行它运行没有错误但user controls
仍然可见.
任何人都知道为什么这段代码没有显示one user control
并隐藏其余部分?我也很乐意听到其他想法.谢谢
private void button1_Click(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
{
if (ctrl .GetType() == typeof(UserControl))
{ …
Run Code Online (Sandbox Code Playgroud) 我只是尝试使用 c# 创建一个文件并在其中写入。这是我的代码:
public void AddLog (string message, string fn_name)
{
string path = @"E:\" + fn_name +".txt";
if (!File.Exists(path))
{
File.Create(path);
File.Delete(path);
TextWriter tw = new StreamWriter(path);
tw.WriteLine("" + message +"");
tw.Close();
}
else if (File.Exists(path))
{
TextWriter tw = new StreamWriter(path,true);
tw.WriteLine("" + message + "");
tw.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它总是给我这个例外:
{“该进程无法访问文件“E:\CheckForFriends.txt”,因为它正在被另一个进程使用。”}
在这一行:File.Delete(path);
即使我删除了这一行,它也会在该行给出相同的异常消息:File.Create(path);
那么,有人知道我的代码有什么问题吗?
您好我想知道是否有更简洁的方法来编写下面的异步代码.基本上我想等待所有任务,但其中一个任务是可选的.感觉不必要的复杂的,想如果我能做到这一点通过一些回调,但一直没能弄明白.
var mobile = true;
var task1 = _service.Async1();
var tasks = new List<Task>
{
task1
};
Task<int> task2 = null;
if (!mobile)
{
task2 = _service.Async2();
tasks.Add(task2);
}
await Task.WhenAll(tasks);
var result1 = task1.Result;
if (!mobile)
{
result2 = task2.Result;
// Do stuff
}
Run Code Online (Sandbox Code Playgroud) 我使用下面的代码片段System.DirectoryServices.AccountManagement
在 ActiveDirectory 中搜索用户。
在user.Name
成功返回,但我怎么能检索其他属性从AD用户,喜欢msExchRecipientTypeDetails
,因为它不是在VisualStudio中2015年的情报显示?
using (PrincipalContext adPrincipalContext = new PrincipalContext(ContextType.Domain, DOMAIN, USERNAME, PASSWORD))
{
UserPrincipal userPrincipal = new UserPrincipal(adPrincipalContext);
userPrincipal.SamAccountName = "user-ID";
PrincipalSearcher search = new PrincipalSearcher(userPrincipal);
foreach (var user in search.FindAll())
{
Console.WriteLine("hei " + user.Name);
// how to retrive other properties from AD like msExchRecipientTypeDetails??
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个方法,我验证和ID,我遇到了问题.ID必须遵循这些规则才有效:
这是代码:
public static String getCartId(String cartId) {
Boolean correctId = false;
while (!correctId) {
cartId = JOptionPane.showInputDialog("Type the Cart ID:");
cartId = cartId.trim();
cartId = cartId.toUpperCase();
char c = cartId.charAt(0);
// VALIDATION
if (cartId.length() != 6)
JOptionPane.showMessageDialog(null, "Cart ID must have only 6 chars, type it again.");
else if (c != 'A' || c != 'E' || c != 'P')
JOptionPane.showMessageDialog(null, "Invalid Cart ID, type it again.");
else
correctId = true;
}
return cartId;
}
Run Code Online (Sandbox Code Playgroud)
如果我输入,比方说,aaaaaa …