|
I think to upload code here, I need to create an article.
So I created another simple example.
I have Form1.vb and UserControl1.vb.
Form1 size is 980x700.
On Form1 are two UserControl1 Picture1 (300x600) and Picture2(600x600).
Code for Form1:
Public Class Form1
'Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Invalidate(True)
'End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HScrollBar1.Minimum = 1
HScrollBar1.Maximum = Me.ClientSize.Width
HScrollBar1.LargeChange = 100
End Sub
Private Sub MyScroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
'Static t_start As DateTime = Now
'Dim t_span As TimeSpan
'Debug.Print("Elapsed time: " && t_span.Milliseconds)
't_start = Now
Invalidate(True)
End Sub
End Class
For usercontrol1
Public Class UserControl1
Private Sub OnPaintPic1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim rcPaper = Me.ClientRectangle
Dim time_start As DateTime = Now
Dim t_span As TimeSpan
Dim bmp As New Bitmap(Me.ClientSize.Width, Me.ClientSize.Height)
Dim graph As Graphics
graph = Graphics.FromImage(bmp)
'Graphics* graph = Graphics::FromImage(&bmp);
' Draw paper
rcPaper.Location = rcPaper.Location '+ ptScrollOffset
graph.Clear(Color.DarkGray)
'Debug.Print("Grid size: " & Me.ClientSize.Width & "x" & Me.ClientSize.Height)
'Debug.Print("Parent size: " & Parent.ClientSize.Width & "x" & Parent.ClientSize.Height)
'graph.FillRectangle(Brushes.White, rcPaper)
graph.DrawRectangle(Pens.Black, rcPaper)
' Draw the grid.
' If bShowGrid Then
For x As Integer = 0 To bmp.Width Step 10
For y As Integer = 0 To bmp.Height Step 10
graph.DrawLine(Pens.Azure, x, y, x + 0.5F, y + 0.5F)
Next y
Next x
'End If
e.Graphics.DrawImage(bmp, 0, 0)
t_span = Now - time_start
bmp.Dispose()
graph.Dispose()
Debug.Print("OnPaint: " && Me.Name && " elapsed time: " && t_span.Milliseconds)
End Sub
End Class
From this example I know this:
Elapsed time for scroll message is about 0 milliseconds.
Elapsed time for draw usercontrol is about 30 ms.
When I call invalidate from timer with 100ms period immediate window shows something like this:
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
When I disable timer and repaint from scroll event it looks like this:
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 46
OnPaint: Picture1 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture2 elapsed time: 15
From these results I think I need somehow to reduce OnScroll events or call another set of repaints after previous set of repaint has finished.
|
|
|
|
|
hi,
now try to add a Panel to the Form1 with Property AutoScroll to true.
than dock you Usercontrol1 into the Panel with DockStyle.Fill;
in your Usercontrol1 i don't understand why you are creating a bitmap to show the result on the usercontrol instead of painting directly to the usercontrol.
try this example do not print debugger output because this could be an indicator why its a slowly painting..
Private Sub OnPaintPic1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim rcPaper = Me.ClientRectangle
Dim time_start As DateTime = Now
Dim t_span As TimeSpan
e.Graphics.FillRectangle(Brushes.DarkGray, rcPaper)
e.Graphics.DrawRectangle(Pens.Black, rcPaper)
' Draw the grid.
' If bShowGrid Then
For x As Integer = 0 To rcPaper.Width Step 10
For y As Integer = 0 To rcPaper.Height Step 10
e.Graphics.DrawLine(Pens.Azure, x, y, x + 0.5F, y + 0.5F)
Next y
Next x
'End If
t_span = Now - time_start
End Sub
|
|
|
|
|
Just for an information how have I deal with this issue. I don't know if it is much clever, but it seems to work.
I added declaration of event into UserControl1:
Public Event DrawFinished(ByVal sControlName As String)
In Form1.vb code I added counter for items to draw nDrawItems, I added handling of DrawFinished event for both events and I modify Scroll event.
It looks something like this:
Public Class Form1
Private nDrawItems As Integer = 0
...
Private Sub Picture1_DrawFinished(ByVal sName As String) Handles Picture1.DrawFinished
If nDrawItems = 0 Then Exit Sub
nDrawItems = nDrawItems - 1
End Sub
Private Sub Picture2_DrawFinished(ByVal sName As String) Handles Picture2.DrawFinished
If nDrawItems = 0 Then Exit Sub
nDrawItems = nDrawItems - 1
End Sub
...
Private Sub MyScroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles HScrollBar1.ValueChanged
If nDrawItems > 0 Then Exit Sub
nDrawItems = 2
Invalidate(True)
While nDrawItems > 0
'Threading.Thread.Sleep(5)
Application.DoEvents()
End While
End Sub
Now I have in Immediate window text like this:
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 15
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture1 elapsed time: 15
OnPaint: Picture2 elapsed time: 31
OnPaint: Picture1 elapsed time: 15
|
|
|
|
|
I have made a login form in c#.net in windows based application.
An error comes "instance failure" when i run and login info...
|
|
|
|
|
Please post your code and the compiler/runtime error messages.
|
|
|
|
|
When i run tje application, it executes successfully but after entering the login info..there generates an error "Instance Failure"
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
namespace Ads_Sertrack_System
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
this.MaximizeBox = false;
this.MinimizeBox = false;
this.StartPosition = FormStartPosition.CenterScreen;
this.WindowState = FormWindowState.Normal;
this.AutoSizeMode = AutoSizeMode.GrowOnly;
this.AutoSize = true;
}
SqlConnection conAdSertrack = new SqlConnection();
string strQry;
SqlCommand cmdLogin;
SqlDataReader dtrLogin;
public static int intLogInId;
public static string strUserName;
public static string strUserRole;
private void frmLogin_Load(object sender, EventArgs e)
{
try
{
conAdSertrack.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ToString();
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
errProvider.Clear();
if (txtUserName.Text == "")
{
errProvider.SetError(txtUserName, "Please Enter User Name");
MessageBox.Show("Please Enter User Name", "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtUserName.Focus();
}
else if (txtPassword.Text == "")
{
errProvider.SetError(txtPassword, "Please Enter Password");
MessageBox.Show("Please Enter Password", "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtPassword.Focus();
}
else
{
strQry = "select userid,username,userrole" +
" from tblusermaster where username = @paramUNm and pwd = @paramPwd";
cmdLogin = new SqlCommand(strQry, conAdSertrack);
cmdLogin.Parameters.Add("@paramUNm", SqlDbType.VarChar, 30).Value = txtUserName.Text;
cmdLogin.Parameters.Add("@paramPwd", SqlDbType.VarChar, 30).Value = txtPassword.Text;
if (conAdSertrack.State == ConnectionState.Closed)
{
conAdSertrack.Open();
}
dtrLogin = cmdLogin.ExecuteReader();
if (dtrLogin.HasRows)
{
dtrLogin.Read();
intLogInId = Convert.ToInt32(dtrLogin[0].ToString().Trim());
strUserName = Convert.ToString(dtrLogin[1].ToString().Trim());
strUserRole = Convert.ToString(dtrLogin[2].ToString().Trim());
frmMDI formMdi = new frmMDI();
formMdi.Show();
this.txtPassword.Text = "";
this.txtUserName.Text = "";
this.Hide();
}
else
{
MessageBox.Show("InValid User Name & Password", "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtUserName.Text = "";
txtPassword.Text = "";
txtUserName.Focus();
}
dtrLogin.Close();
conAdSertrack.Close();
}
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Innor Solutions Pvt. Ltd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
try
{
Application.Exit();
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
Application.Exit();
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void txtUserName_TextChanged(object sender, EventArgs e)
{
try
{
errProvider.Clear();
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void txtPassword_TextChanged(object sender, EventArgs e)
{
try
{
errProvider.Clear();
}
catch (Exception expMsg)
{
MessageBox.Show(expMsg.Message.ToString(), "Alpha Net Technologies Pvt. Ltd: Message Service", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
|
|
|
|
|
Can you please post your connectionstring and what database do you use (maybe SQL-Server Express 2005?).
|
|
|
|
|
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="con" connectionString="Server=.\\sqlexpress;Integrated Security=true; Initial Catalog=AdSertrack_WinPrj;User Instance=false;"/>
</connectionStrings>
</configuration>
|
|
|
|
|
Try server=.\SQLExpress. (only one \)
|
|
|
|
|
|
No problem.
And if I may say so, its not the best way to execute sql-queries directly in your UI.
|
|
|
|
|
I am trying to create a Tabbed List Box in a web page. I have done it in a windows application and it worked perfectly, but I can't find one little tiny piece of information and need some help.
I am trying to use SendMessage with the ListBox and all the examples I see say to use this:
SendMessage(List1.hWnd, LB_SETTABSTOPS, ListBoxTabs.Length, ref ListBoxTabs[0]);
However! There is no hWnd property for the ListBox control. In the windows app it's List1.Handle, however, there is no such property for that in the web control either! Can someone explain to me how to find the hWnd property of a web ListBox?
Thanks in advance for any help you can give.
|
|
|
|
|
MarkyMark1961 wrote: Can someone explain to me how to find the hWnd property of a web ListBox?
There isn't one. You need to spend some time reading up on how to create server controls for ASP.NET before proceeding.
only two letters away from being an asset
|
|
|
|
|
Then why are there examples showing that there is?
|
|
|
|
|
You are most likely confused. Show these sources.
only two letters away from being an asset
|
|
|
|
|
try this one it shows exactly what I was saying among others...
http://www.vb-helper.com/howto_listbox_tabs.html
|
|
|
|
|
Yes, you are very confused.
One, this is for a Windows application. As we have told you SendMessage is not available in ASP.NET.
Two, you are using VB
only two letters away from being an asset
|
|
|
|
|
You're absolutely right! You ARE only two letters away from being an asset!
|
|
|
|
|
Or this one....
http://www.devx.com/vb2themax/Tip/18592
If you don't have anything helpful or constructive to contribute, then why contribute at all?
|
|
|
|
|
Again, Windows, not ASP.NET.
Seriously, stop what you are doing and start reading up on ASP.NET.
only two letters away from being an asset
|
|
|
|
|
Because you are told you don't understand a topic and are given the advice to study it, you vote 1? Very mature. If it was not you, then the same goes for whomever did. At least identify yourself and accept the responsibility to explain why.
only two letters away from being an asset
|
|
|
|
|
The ASP.NET ListBox Server control is completely different from its Windows counterpart. It is just a wrapper over HTML Select tag. Much of what you can do with windows listbox cannot be done with ASP.NET list box. Get yourself a good book on ASP.NET, you may be able to find what you are trying to achieve.
|
|
|
|
|
Im trying to limit the scope of active firectory searches
Searching for users and groups, this code works fine;
String[] properties = { "objectGUID", "sAMAccountName", "displayName", "mail", "member" };
String filter = "(| (objectClass=group) (objectClass=user) )";
DirectorySearcher searcher = null;
try
{
DirectoryEntry de = new DirectoryEntry("LDAP://DC=MyCompany,DC=com");
searcher = new DirectorySearcher(filter, properties);
searcher.SearchRoot = de;
// For a directory synchronization search search scope must be subtree
searcher.SearchScope = SearchScope.Subtree;
searcher.Sort = new SortOption("name", SortDirection.Ascending);
searcher.DirectorySynchronization = new DirectorySynchronization();
// Do the search - results should be all groups and users
SearchResultCollection results = searcher.FindAll();
//For brevity display results in small worker
displayResults(results);
// Results are disposed explicitly
results.Dispose();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
BUT, if i try to start the search from within the tree, I get "COM Exception, access denied"
DirectoryEntry de = new DirectoryEntry("LDAP://OU=Sales,DC=MyCompany,DC=com");
I see examples with "OU=MyOrgUnit" all over - but I cant get it to work.
However, a DirectoryEntry works with the OU= in the root path
Any insight is greatly appreciated
Bill in PA/USA
|
|
|
|
|
Hi,
I am using vb.net and i want to fire labels mousehover and other events when user pressed mouse left buttion.so anybody have any idea pl. answer immediatily.
thanks in advance.
sanjay
|
|
|
|
|
Sanjqfar wrote: answer immediatily.
This is considered rude. If anyone has the answer they will respond in their own time and at their own convenience.
[edit]spelling[/edit]
modified on Monday, October 26, 2009 1:31 PM
|
|
|
|
|