我想问一下如何在程序加载时出现加载屏幕(只是图片或其他东西),并在程序加载完成后消失.
在发烧友的版本中,我看到了显示的进程条(%).你怎么能拥有它,你如何计算显示的百分比?
我知道有一个Form_Load()事件,但我没有看到Form_Loaded()事件,或者%作为属性/属性.
尝试将以下代码放在Load
WinForms或Loaded
WPF的事件处理程序中.
Dim doc As New XmlDocument
Dim nsmgr As New XmlNamespaceManager(Nothing) 'this line throws an exception
Run Code Online (Sandbox Code Playgroud)
问题是不抛出异常,并发生堆栈损坏.它可能有不同的副作用,具体取决于IDE - 见下文.
compatibility mode
.之后的下一次运行与2010年相同.2008正确抛出异常,但仅限于默认配置(AnyCPU).将平台目标切换到x86也会使问题再次出现在2008年.Load
事件.将此代码放入按钮使其工作.Debug
和Release
.为什么我认为它是一个错误是因为它可以使对象处于不稳定状态 - 它们没有完成初始化,这不是预期的行为.重要的是,没有人会知道它发生了,因为它不会引发异常.根据您的设计,您最终可能会在数据库中显示不正确的数据,这在最坏的情况下可能会导致严重的后果.
有没有人能够解释为什么会发生这种情况以及是否有解决方法?
我有一个C#windows窗体应用程序.我当前设置它的方式,当Form1_Load()运行时,它检查恢复的未保存数据,如果找到一些,它会提示用户是否要打开该数据.当程序运行时,它可以正常工作但是消息框会立即显示,并且主程序表单(Form1)在用户单击是或否之后才会显示.我想首先弹出Form1然后弹出消息框提示.
现在,在我在Form中创建一个计时器之前解决这个问题,在Form1_Load()方法中启动计时器,然后在第一个Timer Tick事件中执行检查和用户提示.这种技术解决了这个问题,但似乎可能有更好的方法.
你们有更好的想法吗?
编辑:我想我也使用后台工作人员做类似的事情.通过调用方法返回到表单线程所有麻烦似乎有点傻了,所有的垃圾只是让它延迟了几毫秒!
如何使用C#单击泡沫负载上的按钮?我的按钮被称为:btnFacebookLogin
我试过以下这个:
private void Form1_Shown(Object sender, EventArgs e)
{
btnFacebookLogin.PerformClick();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用WinForms C#.NET 4
自从我涉足C#以来,已经有很长一段时间了,但是我有一段时间让我的form_load开火了.这是最简单的事我无法想象它为什么不会开火!任何援助将不胜感激.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AppName_v4._0___TestRoom_Addon{
public partial class Form1 : Form{
public Form1() {
InitializeComponent();
this.Load += new EventHandler(this.Form1_Load); //FIRES!
}
private void Form1_Load(object sender, EventArgs e) {
webKitBrowser1.Dock = DockStyle.Fill; //DOES NOT FIRE!
webKitBrowser1.Navigate("http://192.168.0.10/?zoneid=11");
}
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我也试过以下但没有成功......
namespace AlphaEntry_v4._0___MailRoom_Addon{
public partial class Form1 : Form{
public Form1() {
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
webKitBrowser1.Dock = DockStyle.Fill;
webKitBrowser1.Navigate("http://192.168.0.10/?zoneid=11");
base.OnLoad(e); …
Run Code Online (Sandbox Code Playgroud) 加载表单时,CreateGraphics()不应该返回图形对象吗?
我的意思是,在 Form1_Load 事件上我可以编写以下内容吗?
Graphics x;
private void Form1_Load(object sender, EventArgs e)
{
x = this.CreateGraphics();
}
Run Code Online (Sandbox Code Playgroud)
如果不是,那为什么?
我认为当您创建一个新表单时,构造函数会启动该表单的所有对象。那么为什么不包括图形对象呢?
我这么问是因为当我尝试在 form_load 上绘制时,它不会显示我绘制的内容。
主要原因是:我想创建一个带有棋盘的游戏 - 因此当用户单击新游戏时 - 首先 - 我将启动棋盘并绘制它。在onPaint事件中我只想绘制面板的当前状态。所以我认为板的初始状态应该在formLoad事件上绘制。
我正在尝试在包含C#中的formload上的PNG的图片框中绘制一些椭圆。当我在下面执行代码时,我会看到椭圆半秒钟,然后再也看不到它们了。
当我单击图片框时,我可以绘制一个椭圆,但是当我最小化表单时,它们不再显示。
我读到您不应该将绘图代码放在formload中,而应该放在OnPaint方法中,这就是我所做的。我不知道该怎么办了。谢谢。(请注意,我已经留下一些代码注释以显示我尝试过的内容)。
public partial class FormParterre : Form
{
Graphics g;
float circleSize = 15;
//Brushes rouge = new Brushes (Brushes.Red);
ReservationBilletSiegeDAO reservationBilletSiegeDAO = new ReservationBilletSiegeDAO();
SiegeDAO siegeDAO = new SiegeDAO();
List <Siege> sieges;
List<ReservationBilletSiege> rbs;
ReservationBillet reservationBillet = new ReservationBillet();
ReservationBilletSiege reservationBilletSiege;
SolidBrush semiTransBrush;
public FormParterre()
{
InitializeComponent();
pictureBox1.Image = new Bitmap("./parterre.png");
g = pictureBox1.CreateGraphics();
}
public FormParterre(ReservationBillet rb)
{
reservationBillet = rb;
pictureBox1.Image = new Bitmap("./parterre.png");
g = pictureBox1.CreateGraphics();
InitializeComponent();
}
protected override void OnPaintBackground(PaintEventArgs e)
{ …
Run Code Online (Sandbox Code Playgroud) form-load ×7
c# ×6
winforms ×5
.net ×3
drawellipse ×1
loading ×1
method-call ×1
paint ×1
screen ×1
wpf ×1