小编Rob*_*bin的帖子

List和IEnumerable之间的实际区别

通过阅读类似的帖子,我了解到List是一种IEnumerable.但我真的很想知道这两者之间的实际区别是什么.

对于总是使用List并且从未使用IEnumerable的人:

  • 两者之间有什么实际区别?
  • 在哪些情况下,其中一个比另一个更好?

这是一个实际的例子:我们想要存储四个字符串,按字母顺序排序,将它们传递给另一个函数,然后向用户显示结果.我们会用什么?为什么?

希望有人可以为我排序或指出我正确的方向.提前致谢!

.net c# ienumerable list

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

调用Form.Show()时设置表单的位置

我正在尝试在调用时设置表单的位置.Show().问题是,因为我使用.Show而不是.ShowDialogStartPosition值不起作用.我不能使用.Showdialog因为我希望程序在显示表单时在后台工作.

当我创建表单时,我将其位置设置为固定值:

using (ConnectingForm CF = new ConnectingForm())
{
    CF.Show();
    CF.Location = new Point(this.ClientSize.Width / 2, this.ClientSize.Height / 2);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,每次启动时,表单都会将其置于不同的位置.

有解决方案吗 (我的代码永远不会在其他地方设置该位置)

.net c# windows visual-studio-2012

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

AutoEllipsis = true会影响文本的垂直位置

我有一个标签AutoEllipsis = trueTextAlign = ContentAlignment.MiddleLeft.当我输入不扩展标签宽度的文本时,文本垂直对齐到标签的中间.

在此输入图像描述

但是,当文本扩展标签宽度时,文本不会与中间对齐,而是与顶部对齐.

在此输入图像描述

为什么它会以这种方式运行,是否有办法使文本垂直居中对齐?

c# label text-alignment winforms

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

如何基于两个给定点和描述圆弧段的给定高度绘制圆弧?

我正在尝试基于两个给定点和描述圆弧段的给定高度绘制弧.为了实现这一点,我将使用java.awt.Graphics中的以下方法.

drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
Run Code Online (Sandbox Code Playgroud)

首先,我观察到x,y,width和height值描述了一个包含圆的矩形.

弧的中心是矩形的中心,其原点是(x,y),其大小由width和height参数指定.(http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html)

首先,我首先计算x,y,width和height值.下图描述了我将如何做到这一点.

在此输入图像描述

第一张照片显示了我已经获得的价值.第一张照片中的弧线正是我想要绘制的.在图片二中,我计算了两点之间一条线的长度.我执行此步骤的代码如下所示:

int dx = p1.x- p2.x;
int dy = p1.y - p2.y;
double len = Math.sqrt(Math.pow((double)dx, 2) + Math.pow((double)dy, 2));
Run Code Online (Sandbox Code Playgroud)

如图3所示,我现在可以使用以下函数计算圆的半径.

radius = h/2 + len^2 / 8h
Run Code Online (Sandbox Code Playgroud)

我遇到的第一个问题是计算圆的中心点.这部分是我需要帮助的地方.

如果我要计算中心点,我可以很容易地找到x,y,whith和height坐标.

x = centerPoint.x - radius;
y = centerPoint.y - radius;
width = radius * 2;
height = radius * 2;
Run Code Online (Sandbox Code Playgroud)

最后一部分是根据我们已经计算过的值计算startAngle和arcAngle.

TL; DR我需要帮助计算角度和中心点.

提前致谢!

java graphics geometry trigonometry segment

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

将按钮上的文本居中

我创建了两个按钮,其中.Text属性包含我想要居中的字符,但我无法让它正常工作.目前按钮看起来像这样:

在此输入图像描述

代码看起来像这样:

btnUp.Text = "?";
btnDown.Text = "?";
btnUp.TextAlign = ContentAlignment.MiddleCenter;
btnDown.TextAlign = ContentAlignment.MiddleCenter;
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是按钮的文本居中,因此箭头将完全位于控件的中间.我怎么做到这一点?

仔细看看为什么我不开心:

在此输入图像描述

感谢Thomas Mondel的解决方案 以下是结果:

在此输入图像描述

.net c# button winforms centering

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

为什么System.nanoTime()在迭代开始时不正确?

我注意到System.nanoTime()的模式。每次我开始迭代时,nanoTime()在连续几圈之前都会变得非常不正确,直到最终稳定下来。

例如,如果我运行以下代码:

public class TimeTest{
    public static void main(String[] args) {
        long prev = System.nanoTime();

        for(int i = 0; i < 10; i++) {
            for(int j = 0; j < 1000000; j++);
            long time = System.nanoTime();
            System.out.println(time - prev);
            prev = time;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

测试结果1

为了消除Sys​​tem.out.println(String)弄乱结果的可能性,我还可以运行以下测试:

public class TimeTest{
    public static void main(String[] args) {
        long[] difs = new long[10];
        long prev = System.nanoTime();

        for(int i = 0; i < 10; i++) {
            for(int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

java time loops

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

类中所有值类型的常规函数

我正在尝试在课程中完成以下内容:

public void Test(var input)
{
    WriteToFile(input.ToString());
}

private void WriteToFile(string input)
{
    .....
}
Run Code Online (Sandbox Code Playgroud)

但'var'语句不能在类中使用.所以我想知道最简单的方法是如何完成与上面相同的事情.

一种解决方案是为每种值类型创建一个函数,但这必然比必要的麻烦更多:

public void Test(string input)
{
    WriteToFile(input);
}

public void Test(int input)
{
    WriteToFile(input.ToString());
}

public void Test(double input)
{
    WriteToFile(input.ToString());
}

private void WriteToFile(string input)
{
    .....
}
Run Code Online (Sandbox Code Playgroud)

编辑:当更多地考虑它时,我明白这不是我的问题的答案.我发布了一个有更多想法背后的新问题.我不会删除这个问题,因为其他人可能会觉得这个有用.

.net c# winforms

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

将我自己的类传递给对象

我有一个WriteList将列表保存到文件中的函数.此函数具有参数,List<Object>因此我可以将不同类型的列表作为参数传递.

    public void WriteList(List<object> input, string ListName)
    {
        WriteToFile("List - " + ListName);
        foreach (object temp in input)
        {
            WriteToFile(temp.ToString());
        }
    }
Run Code Online (Sandbox Code Playgroud)

从我的代码调用此函数时,我想传递参数List<Database>where Database我自己的类.我收到以下错误:

无法从'System.Collections.Generic.List -Database-'转换为'System.Collections.Generic.List-object-'

所以我的问题是如何将我自己的类转换为Object,然后将列表传递给我的函数.

.net c# object winforms

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

创建在单个字符串中包含换行符的 SQL 查询

在 SQL Server Management Studio 中,我创建一个新查询,然后运行以下代码:

select dbName.dbo.ScalarFunction()
union
select dbName2.dbo.ScalarFunction()
Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的 C# 程序中做同样的事情。但是,我无法将上述内容转换为一个查询字符串。我尝试了以下方法,但没有成功:

string QueryString = @"select dbName.dbo.ScalarFunction() /r/n union /r/n select dbName2.dbo.ScalarFunction()"
Run Code Online (Sandbox Code Playgroud)

string QueryString = @"select dbName.dbo.ScalarFunction(); union; select dbName2.dbo.ScalarFunction();"
Run Code Online (Sandbox Code Playgroud)

string QueryString = @"select dbName.dbo.ScalarFunction(); union select dbName2.dbo.ScalarFunction();"
Run Code Online (Sandbox Code Playgroud)

我对 SQL 非常陌生,所以如果有人能帮助我使用正确的语法,我将非常高兴!提前致谢!

c# sql ssms

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

主线程忙时连续更新UI

我想在我的MainForm正在进行一些与数据库相关的工作时显示带有Progressbar的新表单.我已经读过你不想将UI传递给新的线程,所以我想知道解决这个问题的最佳解决方案是什么?

我无法在另一个线程上执行与数据库相关的工作,因为它使用了对UI和MainForm的十几个调用.我也无法使用,Application.DoEvents()因为MainForm的线程在类中工作,据我所知,你不应该对类的父类进行任何调用.

任何建议,将不胜感激!

编辑

澄清我实际想知道的事情:

我的程序看起来有点像这样:

... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
Run Code Online (Sandbox Code Playgroud)

我想做的是以下内容:

//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
ApplyContentToUI(Content);
//Close the form here
Run Code Online (Sandbox Code Playgroud)

但是,因为执行ApplyContentToUI的时间是aprox.1秒我决定做以下事情:

//Show a form here with a progressbar
... Content = DatabaseClass.LoadContent();
//Close the form here
ApplyContentToUI(Content);
Run Code Online (Sandbox Code Playgroud)

如果您和我不同,需要在重新加载UI时显示进度条,我建议您查看下面的注释和答案.

.net c# multithreading winforms

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

从Listview列中删除图像

对于ListView我正在使用我自己的图像的列来显示排序是升序还是降序.当我设置column.ImageKey属性时,列的文本向右移动以为图像腾出空间.我遇到的问题是当我不再需要它时如何删除图像.通过设置column.ImageKey = ""column.ImageIndex = -1我删除图像,但文本不在它的起始位置.所以基本上我只是重置了图像对象位图,但我没有删除图像对象本身.所以我想知道如何删除/禁用图像对象.

.net c# winforms visual-studio-2012

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