我有一个表单显示进度消息,因为一个相当长的过程运行.这是对Web服务的调用,因此我无法真正显示进度条上的百分比完整数字.(我不特别喜欢进度条的Marquee属性)
我想展示一个动画GIF,让过程感受到一些活动(例如,从一台计算机飞到另一台计算机的文件,如Windows复制过程).
你怎么做到这一点?
我在Windows窗体上填充DataGridView控件(C#2.0而不是WPF).
我的目标是显示一个整齐地填充所有可用宽度的网格 - 即右侧没有未使用的(深灰色)区域,并根据其包含的数据适当地调整每列的大小,但也允许用户调整任何列的大小他们喜欢.
我试图通过将每列的AutoSizeMode设置为DataGridViewAutoSizeColumnMode.AllCells来实现此目的,除了我设置为DataGridViewAutoSizeColumnMode.Fill的列之一,以确保网格的整个区域整齐地填充数据.(我不介意当用户尝试调整此列的大小时,它会弹回一个确保始终使用水平空间的大小.)
但是,正如我所提到的,一旦加载,我想允许用户调整列的大小以满足他们自己的要求 - 在为每个列设置这些AutoSizeMode值时,用户就无法再调整这些列的大小.
我试过没有设置允许调整大小的所有列的AutoSizeMode但是没有根据单元格包含的数据设置初始大小.加载数据后将网格的AutoSizeMode更改回"未设置"时会出现相同的结果.
是否有一个我在这里缺少的设置允许自动设置默认列宽和用户调整大小,还是在填充DataGridView控件时我必须使用另一种技术?
我有一个存储在表格中的Html片段.不是整页,没有标签等,只是基本的格式.
我希望能够在给定页面上显示Html仅作为文本,没有格式化(实际上只是前30到50个字符,但这很容易).
如何将该Html中的"文本"作为直文放入字符串中?
所以这段代码.
<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Run Code Online (Sandbox Code Playgroud)
变为:
你好,世界.有没有人在那里?
是否可以在不使用DoEvents的情况下取消VB6.0中长时间运行的进程?
例如:
for i = 1 to someVeryHighNumber
' Do some work here '
...
if cancel then
exit for
end if
next
Sub btnCancel_Click()
cancel = true
End Sub
Run Code Online (Sandbox Code Playgroud)
我假设我需要一个"DoEvents"才能"如果取消那么......"还有更好的方法吗?有一阵子了...
确定WinForms应用程序是否有可用Internet连接的最佳方法是什么.(当然是以编程方式)如果用户未连接到Internet,我想禁用/隐藏某些功能.
我最近注意到一些我不理解的Visual Studio Designer(C#)的行为,并且想知道是否有人可以澄清......
我的一些Windows窗体,设计器的第一行生成代码读取;
this.components = new System.ComponentModel.Container();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,dispose方法,在同一个设计器文件中,dispose方法在case"if"条件下放置两个"Dispose"调用,如下所示;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
base.Dispose(disposing);
}
}
Run Code Online (Sandbox Code Playgroud)
即,除非disposing为true,否则不调用任何内容,AND组件不为null.
在其他一些表单中,缺少设计器生成代码中的第一行.在这些情况下,base.Dispose调用在"if"条件之外......
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
我已经注意到这一点,同时跟踪一个没有关闭的表单的bug,其中this.components为null,但base.Dispose调用是在那个条件内(我怀疑设计师代码已被篡改但这是另一个故事.
什么控制了这种行为?
(项目中的一些早期形式是在VS 2005中创建的,我们现在使用VS 2008 - 线索?)
c# visual-studio-2005 visual-studio-2008 visual-studio winforms
在这样的LINQ to实体表达式中:
var vote = (from vote in db.Vote where
vote.Voter.Id == user.Id
select v).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
如何添加DefaultIfEmpty值,以便在没有投票时我会得到一个默认值?
如此问题中所述,如果您希望在DataGridViewCheckBoxCell中显示复选框,则DataGridView(WinForm而不是WPF)中行的最小行高似乎为17 .任何较小的复选框都会消失!
有没有办法在DataGridView单元格中放置一个较小的复选框?
我有一个设置为AutoSize的图片框,以便图像强制它增长到图像的完整大小.
图片框位于autoScroll = true的面板中,因此当图片大于面板时会出现滚动条.
当用户单击图像上的拖动时,如何以编程方式滚动面板,从而重新定位图像.
我尝试过使用MouseMove事件,捕获鼠标的最后X和Y位置,计算鼠标移动了多少,并调整了面板的垂直和水平滚动值.
确实可以移动图像,但它会在整个地方跳跃,并且无法预测地滚动.
我怎样才能做到这一点?
这是我在鼠标事件中所拥有的......
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
if (e.Button == MouseButtons.Left)
{
// move the image inverse to direction dragged
int horizontalChange = (e.X - startingX) * -1;
int newHorizontalPos = panel1.HorizontalScroll.Value + horizontalChange;
if (newHorizontalPos < panel1.HorizontalScroll.Minimum)
{
newHorizontalPos = panel1.HorizontalScroll.Minimum;
horizontalChange = 0;
}
if (newHorizontalPos > panel1.HorizontalScroll.Maximum)
{
newHorizontalPos = panel1.HorizontalScroll.Maximum;
horizontalChange = 0;
}
panel1.HorizontalScroll.Value = newHorizontalPos;
int verticalChange = (e.Y - startingY);
// …
Run Code Online (Sandbox Code Playgroud) 我有一个DataGridView,其数据源设置为自定义对象的通用列表.当用户更改值(在这种情况下检查/取消选中复选框)时,对象中的基础布尔字段会发生变化.
我是否应该创建List的"副本"进行绑定,然后在用户提交时手动更新(如果是这样,如何创建此副本),或者是否有一种简单的方法来回滚对数据源所做的更改.
(我正在使用C#)
c# ×7
winforms ×6
datagridview ×2
.net ×1
animated-gif ×1
asp.net ×1
data-binding ×1
html ×1
linq ×1
panel ×1
picturebox ×1
vb6 ×1