|
I'm using Late binding to control powerpoint. I now am at the point where
it does what I want it to do, but I need some eventhandling to know what it's doing.
All the samples I see that deal with events use early binding
(http://support.microsoft.com/default.aspx?scid=kb;en-us;308825)
and this type of function:
<br />
oPPT = new PowerPoint.ApplicationClass();<br />
UCOMIConnectionPointContainer oConnPointContainer = (UCOMIConnectionPointContainer) oPPT;<br />
Since I'm using LateBinding, i Use:
<br />
Object oPPT;<br />
Type objClassType;<br />
objClassType = Type.GetTypeFromProgID("Powerpoint.Application");<br />
oPPT = Activator.CreateInstance(objClassType);<br />
Now when trying to do the same thing with UCOMIConnectionPointContainer it returns NULL because it's just an 'object' due to late binding - How do i fix this?
How can I hook up events when using late binding? Is this even possible?
Thanks
|
|
|
|
|
I have a datagrid that all of its columns are BoolColumnStyle and its DataSource is a table with no relations. I relate this DG with a counter, when I mark true or false in each DataGridCell the counter adds or subtracts (respectively) a certain number. Also I relate a TreeView with this DataGrid that the previous counter works separately for each TreeNode under the TopNode in this DataGrid. I used the following code to make my datagrid to respond to one click :
private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
DataGrid.HitTestInfo hti = this.dataGrid1.HitTest(e.X, e.Y);
try
{
if( hti.Type = = DataGrid.HitTestType.Cell )
{
int r = (int)hti.Row;
int c = (int)hti.Column;
DataRow dr = table.Rows[r];
DataColumn dc = table.Columns[c];
this.dataGrid1[r,c] = !(bool) this.dataGrid1[r,c];
}
}
catch(Exception ex )
{
MessageBox.Show(ex.ToString());
}
} I have the following problems :
1. The following message appears. I do not know what is the ListManeger or in other words, I do not understand what is the problem.
The ListManeger’s position must be equal to the rowNum.
Parameter name: rowNum Do you want to correct the value? 2. The DataGrid responds to clicks even when there is no any TreeNodes are selected although I make a ckeck if (TreeView.TreeNode IsSelected). I want the DataGrid to respond to clicks only when any TreeNode under the TopNode is selected.
3. when the selected TreeNode is changed, I empty the DataGrid by the following code, but the last cell that I add a value to it remains checked :
for(int i=0 ; i<table.Rows.Count ; i++)
{
DataRow dr = table.Rows[i];
for(int j=0 ; j<table.Columns.Count; j++)
{
dr[j] = false;
}
} The problems 1 and 3 disturb my counter.
Please if there is a solution.
Thank you
|
|
|
|
|
Let's say that I am having two Dataset objects ds1 and ds2. These DataSets have exactly the same schema. Same DataTable (only one) in each DataSet and same DataColumns. Can anyone tell me, how can I join these two DataSets into a third one, so that the new one will have the DataRows of ds1.Tables[0] followed by the DataRows of ds2.Tables[0]?
.::YF::.
|
|
|
|
|
Let's say that I am having two Dataset objects ds1 and ds2. These DataSets have exactly the same schema. Same DataTable (only one) in each DataSet and same DataColumns. Can anyone tell me, how can I join these two DataSets into a third one, so that the new one will have the DataRows of ds1.Tables[0] followed by the DataRows of ds2.Tables[0]?
The language I am writing the project is C#.
.::YF::.
|
|
|
|
|
Try to create a function to join them... Maybe this that join tables can help you
public static DataTable JoinDataTable(DataTable odtt1, DataTable odtt2)
{
DataTable odtt = odtt1.Copy();
foreach(DataRow row in odtt2.Rows)
{
try
{
DataRow r = odtt.NewRow();
r.ItemArray = row.ItemArray;
odtt.Rows.Add(r);
}
catch(Exception e) //if the schema are not equal
{
string x = e.Message;
break;
}
}
return odtt;
}
Just do
DataSet ds3 = new DataSet();
ds3.Tables.Add(JoinDataTable(ds1.Tables[0],ds2.Tables[0]));
maybe it works... good luck
Wender Oliveira
.NET Programmer
|
|
|
|
|
Hi,
This is probably a really dumb question, but I haven't done many C# Windows apps - I've been living in the web world. What's the usual way of defining some standard sets of fonts/size/colors for all the labels of a windows app? I'll have many labels of 3 basic 'styles' and I don't want to go and set the font size on each of them. I'd rather declare the 3 'styles' and attach the labels to them.
thanks,
Deanna
|
|
|
|
|
There's not really something like css for Windows Forms built-in.
Unless overriden, a control adapts to it's container's properties (for example, dropping a label onto a form will give it the font, fore- and backcolor of the form), but that's not really what you want.
I think you'll have to invent something on your own...
You could derive a LabelWithStyle from Label, though. This label could receive an additional Style property and look up fonts, colors etc. from an embedded resource.
Regards,
mav
|
|
|
|
|
Hi.
I creat this property:
private byte[] m_buf;<br />
public byte[] Buffer<br />
{<br />
get{return m_buf;}<br />
set{m_buf=value;}<br />
} when i bind this property to Image type in sql server, at run time displaying this error:
cannot convert system.DBNull to other type.
please help me.
|
|
|
|
|
Hi!
I am developing a client/server app.
The problem is that the server side is uneable to read from the cryptostream (although the underlying NetworkStream has available data).
Here's the client side:
tcpc=new TcpClient();
tcpc.Connect(Client.Settings.serverName,Client.Settings.ServerRegisterPort);
NetworkStream S=tcpc.GetStream();
BinaryFormatter bf=new BinaryFormatter();
CryptoStream Si, So;
Client.DoKeyExchange(S,out Si,out So);
string resp="OK\n";
byte b=3;
So.WriteByte(b);
So.Flush();So.FlushFinalBlock();
S.Flush();
And the server side:
NetworkStream S=new NetworkStream(Soc,true);
BinaryFormatter bf=new BinaryFormatter();
CryptoStream Si,So;
Server.GetKeyExchange(S,out Si,out So);
b=Si.ReadByte();
The server block (maybe waiting for more data) at this line.
And the two functions:
public static void DoKeyExchange(Stream S, out CryptoStream Si, out CryptoStream So)
{
Rijndael rijn=Rijndael.Create();
//rijn.KeySize=128;
rijn.GenerateIV();
rijn.GenerateKey();
RSAOAEPKeyExchangeFormatter RsaF=new RSAOAEPKeyExchangeFormatter(rsa);
byte [] iv=RsaF.CreateKeyExchange(rijn.IV);
byte [] key=RsaF.CreateKeyExchange(rijn.Key);
BinaryFormatter bf=new BinaryFormatter();
bf.Serialize(S,iv);
bf.Serialize(S,key);
S.Flush();
rijn.Key=ASCIIEncoding.ASCII.GetBytes("ABCDEFGHABCDEFGH");
rijn.IV=ASCIIEncoding.ASCII.GetBytes("ABCDEFGHABCDEFGH");
So=new CryptoStream(S,rijn.CreateEncryptor(),CryptoStreamMode.Write);
Si=new CryptoStream(S,rijn.CreateDecryptor(),CryptoStreamMode.Read);
}
public static void GetKeyExchange(Stream S, out CryptoStream Si, out CryptoStream So)
{
RSAOAEPKeyExchangeDeformatter RsaF=new RSAOAEPKeyExchangeDeformatter(rsa);
BinaryFormatter bf=new BinaryFormatter();
byte [] iv=(byte[])bf.Deserialize(S);
byte [] key=(byte[])bf.Deserialize(S);
iv=RsaF.DecryptKeyExchange(iv);
key=RsaF.DecryptKeyExchange(key);
Rijndael rij=Rijndael.Create();
rij.IV=iv;
rij.Key=key;
Si=new CryptoStream(S,rij.CreateDecryptor(key,iv),CryptoStreamMode.Read);
So=new CryptoStream(S,rij.CreateEncryptor(key,iv),CryptoStreamMode.Write);
}
Any ideeas?
Best,
Mircea
|
|
|
|
|
Hi, all the time is showing me error at line:
objConexao = New SqlConnection(connString);
which says that I forgot the semicolon(;), but as you can see I did not forget it!
See the whole routine bellow inside a .aspx page:
<%@ Page Language="C#" Debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
public void Page_Load(Object Sender, EventArgs EA)
{
String connString,strSQL;
SqlConnection objConexao;
SqlCommand objCommand;
SqlDataReader objDataReader;
connString = "Server=Localhost; Database=Northwind; Uid=SqlService; Password=xx;";
objConexao = New SqlConnection(connString);
objConexao.Open();
strSQL = "SELECT * FROM Products";
objCommand = New SqlCommand(strSQL, objConexao);
objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
While(objDataReader.Read = True)
{
lblSaida.Text += objDataReader["ProductName"] + " - " + objDataReader["UnitPrice"] + "<br>";
}
objDataReader.Close();
objConexao.Close();
objDataReader = Nothing;
objCommand = Nothing;
objConexao = Nothing;
}
</script>
-------------
Thanks,
=========================
Vilmar Brazão de Oliveira
|
|
|
|
|
This question belongs in the ASP.NET[^] forum. However just a side note, that message is typically a sign that you left something out above where it ran into your code statement saying you need a semicolon.
- Nick Parker My Blog | My Articles
|
|
|
|
|
OK, so how can I fix it?
thanks by help.
=========================
Vilmar Brazão de Oliveira
|
|
|
|
|
Take care... you're mixing VB and C#... C# is case sensitive so make your line objConexao = New SqlConnection(connString); to have a lowercase new like objConexao = new SqlConnection(connString);
don't forget that Nothing doesn't exists... use null like
objDataReader = null;
But I think that you won't need to set null or nothing to your objects because your already have the Garbage Colector
Good Luck and abraços!
Wender Oliveira
.NET Programmer
|
|
|
|
|
Hey guys,
I thank you all!
Wender you guessed! My problem is that I am more habituated with VB/VB.net than with C#.
Regards,
Um abraço tb.!
=========================
Vilmar Brazão de Oliveira
|
|
|
|
|
How can I get an XmlNode from an XmlTextReader . What I really want to know is this.
Here is my XmlTextReader
XmlTextReader xtr=new XmlTextReader(this.textBox1.Text);
Now, I want to use this method, but I can't get an XmlNode out of xtr. What do I do?
public void LoopThroughChildren(XmlNode root)
{
this.listBox1.Items.Add(root.Name+ " \t\t\t"+root.FirstChild.Value);
foreach (XmlNode n in root.ChildNodes)
{
if (n.NodeType == XmlNodeType.Element)
{
LoopThroughChildren(n);
}
}
}
I was using an XmlDocument but my xml file is too large to use it anymore... So basicilly can somebody help me write a recursive method that goes though an entire xml file?
/\ |_ E X E GG
|
|
|
|
|
Nevermind, I just realized how dumb my question was...
/\ |_ E X E GG
|
|
|
|
|
Have you thought about using XPath to select from your XML document?
- Nick Parker My Blog | My Articles
|
|
|
|
|
nope. I don't know what that is.
/\ |_ E X E GG
|
|
|
|
|
There are a series of classes within the .NET Framework that support XPath. Read the XPath specification at the W3C[^], there are also a bunch of useful articles that may be more easy to understand that can be found on Google. This[^]
might be the easiest way to get started.
- Nick Parker My Blog | My Articles
|
|
|
|
|
Just you opinion here... Do you think this would be a better substitute for parsing a huge XML file into a database and then running queries on it???? Running xpath queries sounds pretty nice.
/\ |_ E X E GG
|
|
|
|
|
Actually, i need some little help because i'm facing a "high-level" problem ( i call it that, because it is not a familier or ordinary problem).
I was able to export a shockwave flash file into the C#
environment by a certain COM component, then i added some
fading features to the generated exe by making use of the
opacity and about 3 timers (the exe file has 3 forms).
The problem is during the execution, i pressed Ctrl+Alt+Del and i was surprised to see the Memory Usage of my file to be about 13 MB , which increases to about 17 MB when i call the other forms to appear (like the "About me" form)!!!
The most strange thing is that my file is really small in size, 136KB!
Is the cause for this, the usage of timers or what? and is there anyway through which i can decrease the mem usage, because this size is large indeed,,,
Microprose F117
|
|
|
|
|
"export a shockwave flash file into the C#" using com+ will increase the memory usage of your app-form, since the flash is costing, and com+ loads other dlls which is necessary to run the flash exporting com+ dll. memory usage is not necessary related to the file size, it depends how it runing, how many extra resources which it bring up during the running process.
|
|
|
|
|
First off, quit yelling!
The problem is not beacuse of the Timers, it's because your running a Managed app. 13-17MB is not uncommon for a Windows Forms managed application. You file size is 136K because it's IL code, not an executable. The IL gets translated into machine code by the .NET Framework and runs in what is essentially a virtual machine. The large memory footprint is the overhead of the .NET Framework and, no, you really can't make it any smaller.
You really don't have to worry about the memory footprint because it is managed by the Framework's Garbage Collector. I would HIGHLY suggest reading about it here[^]. It runs a bit lazily and won't clean up objects and free memory right away unless your machine start running low on memory.
I've got an app, puzzle solver really, that will consume about 2.3GB, yes GB, of memory at it's peak, even though the executable size is a mere 52KB. It beat the hell out of the GC so bad I had to write in my own memory manager to handle forecasting and pre-allocating array space.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Dave Kreskowiak wrote:
It beat the hell out of the GC so bad I had to write in my own memory manager to handle forecasting and pre-allocating array space.
I would love to see this as an article, that would definitely be interesting.
- Nick Parker My Blog | My Articles
|
|
|
|
|
2.3 GB? I thought a process under a 32-Bit windows could consume 2 GB maximum...
|
|
|
|