|
We can archieve it by
deriving the DataGridBoolColumn class and override the Edit method like
below:
protected override void Edit(CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
object obj = this.GetColumnValueAtRow(source,rowNum);
//check if the value is DBNull,if it is, according to the
default behavior set it to false
if ( !(obj is System.DBNull) )
{
this.SetColumnValueAtRow (source,rowNum,!(Boolean) obj);
}
else this.SetColumnValueAtRow(source,rowNum,false);
base.Edit(source,rowNum,bounds,readOnly, instantText, cellIsVisible);
}
|
|
|
|
|
Thanks Alomgir, for the reply
i tried what you said and method Edit is called when i click inside the checkbox. Value is then null (i guess). Another click set's it to true but Edit method is not called when i do this. Seems like the grid is in some kind of edit mode. Only when i leave the current checkbox and return then i can see it's value is true. But when set it to false then i can only know i did that when i leave and return the checkbox.
So Edit is not called everytime i click inside the checkboxes.
Perhaps i'm doing somethig wrong dunno ?
EDIT:
so what i really need is an event which is triggered on every value change inside a checkbox no matter how many times in a row i change them.
|
|
|
|
|
Hold on please, I will send you one small sample project.
|
|
|
|
|
mgir Miahusing System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace BoolColumn
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dataGrid1;
private ArrayList dataSource = null;
private DataGridTableStyle dataGridTableStyle = null;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
this.InitializeDataSource();
this.InitializeGrid();
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.dataGrid1 = new System.Windows.Forms.DataGrid();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// dataGrid1
//
this.dataGrid1.DataMember = "";
this.dataGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(416, 238);
this.dataGrid1.TabIndex = 0;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(416, 238);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.dataGrid1});
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);
}
#endregion
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void InitializeDataSource()
{
dataSource = new ArrayList();
dataSource.Add(new Source());
dataSource.Add(new Source());
dataSource.Add(new Source());
dataSource.Add(new Source());
this.dataGrid1.DataSource = dataSource;
}
private void InitializeGrid()
{
this.dataGridTableStyle = new DataGridTableStyle();
this.dataGridTableStyle.MappingName = "ArrayList";
DataGridBoolColumnEx col = new DataGridBoolColumnEx();
col.AllowNull = false;
col.MappingName = "X";
this.dataGridTableStyle.GridColumnStyles.Add(col);
this.dataGrid1.TableStyles.Clear();
this.dataGrid1.TableStyles.Add(dataGridTableStyle);
}
}
public class Source
{
bool x = false;
public bool X
{
get
{
return x;
}
set
{
this.x = value;
}
}
}
///
/// Summary description for BoolColumnEx.
///
public class DataGridBoolColumnEx: DataGridBoolColumn
{
public DataGridBoolColumnEx()
{
}
protected override void Edit(CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
object obj = this.GetColumnValueAtRow(source,rowNum);
//check if the value is DBNull,if it is, according to the
//default behavior set it to false
if ( !(obj is System.DBNull) )
{
this.SetColumnValueAtRow (source,rowNum,!(Boolean) obj);
}
else this.SetColumnValueAtRow(source,rowNum,false);
base.Edit(source,rowNum,bounds,readOnly, instantText, cellIsVisible);
}
}
}
|
|
|
|
|
Hi!
When i compilied my projects as release i get mscorlib.xml and xml files for all other Microsoft DLLs (like System.Drawing) that are included.
Do i need this xml files or can i delete them?
|
|
|
|
|
Who can help me tofind tools to convert from MS Access Database to MYSQL Database
I tried so hard and got so far
|
|
|
|
|
You can write a plugin in JSP or PHP which Takes all the data form ms access and first create the structure in MYSQL then transfer the data to it. Right now i don't know any tool but you can do this by using this methos. It will take hardly 2 or 3 Hours to done this work.
Try it..
Ankit Singhal
|
|
|
|
|
I want to keep a connection string in a config file in a DLL project. I have tried using myappname.dll.config and app.config and have stored the data like this...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="constring" value="a_connection_string_goes_here"/>
</appSettings>
</configuration>
and try to retrieve this data using...
strConnectionString = ConfigurationSettings.AppSettings["constring"];
I'm only getting null back. The application doesn't seem to be able to see the config file.
ConfigurationSettings.AppSettings.Keys.Count is zero.
ConfigurationSettings.AppSettings.Count is zero.
Can anyone tell me why this is not working?
Thanks in advance - Dave
|
|
|
|
|
Configuration files seems to be intended for applications, not for libraries.
ConfigurationSettings is just a wrapper around XmlDocument
You can easily write your own (and provide abstract API, so you can extend or re-implement it in case you figure out some better way how to do it).
David
Never forget: "Stay kul and happy" (I.A.)
David's thoughts / dnhsoftware.org / MyHTMLTidy
|
|
|
|
|
Because .DLL projects can't have config files.
Since the .DLL becomes part of the host application using it, any code you write like this in the .DLL will use the host applications config file.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I'm programming a neural network
and I got a small user interface problem.
I want it to lool like this:
Input: 10 Output: 0
The algorithm could look like this:
1. print Input:
2. get 2 chars
3. procesing
4. print Output:
5. print result of proccesing
But I can't do the get 2 chars line.
<br />
static void Main(string[] args)<br />
{<br />
NeuralNetwork nn = new NeuralNetwork(2);<br />
nn[0].addNeurons(2);<br />
nn[1].addNeurons(1);<br />
<br />
nn.CENTENIPL();<br />
<br />
educateNeuron(nn);<br />
<br />
do<br />
{<br />
setInputs(nn);<br />
nn.CalcNet();<br />
<br />
Console.Write(" Output ");<br />
for (int i = 0; i < nn[1].neurons.Length;i++ )<br />
Console.Write(nn[1][0].output);<br />
Console.Write('\n');<br />
} while (true);<br />
}<br />
static void setInputs(NeuralNetwork nn)<br />
{<br />
Console.Write("Input: ");<br />
char[] buffer = new char[nn[0].neurons.Length];<br />
Console.In.Read(buffer, 0, buffer.Length);<br />
<br />
for (int i = 0; i < buffer.Length; i++)<br />
{<br />
if (buffer[i] == '0')<br />
nn[0][i].output = 0;<br />
else<br />
nn[0][i].output = 1;<br />
}<br />
}<br />
Now it looks like:
Input: 01
Output 0,009378789
Input: Output 0,9900505
//don't worry about the decimals
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
You ought to be able to figure this out by looking at the string.Format documentation. That function will allow all sorts of formatting, including ways to force a number to display as 2 digits.
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
It's not a number!!
It's 2 binary datas.
And it's input numbers!!
I didn't express my self clearly.
Input: [input 2 chars without pressing ENTER] Output: [whatever]
Hope you get it now.
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
All the data in a computer can be represented as numbers (bytes are numbers). So, you can use string.Format() to represent that data as a string.
[edit]
IF you're talking about a single binary digit as the input, then you simply transform your two bits into two bytes, using the bitwise operators to set your byte to 1 or 0 based on the state of the bit.
[/edit]
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
That isn't the prob.
I want to take 2 and only 2 chars of input and no moore.
And it should (if possible) not need the enter key to be
pressed at all.
Casting is easy and I don't do it with string.Format()
anyway.
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
Ah! You're asking about input, not output. Ok.
Y'know, I haven't written a console application with the need to do that, so I can't help much with that. However, if you turned it into a window display, it would be very simple.
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
Yes. I also know that but now it's in
a console and it stays there for a while.
Could anyone else please help me with this.
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
I did a search for you, since I was curious too. Here[^]'s a link that looks to be right on the money. (It's written in VB.NET, but you can use it or translate only the piece you need.)
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
Hi, i have wrote this code to create a static class
public static class Tools
{
public static Tools()
{}
}
but the complier give me this error :
The modifier 'static' is not valid for this item. (referring to the class declaration)
What i miss?
thanks
|
|
|
|
|
static class es is a new feature in .NET 2.0 (still in beta). Are you sure you're not programming for .NET 1.1?
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Hello
You've missed reading MSDN:
"The static modifier can be used with fields, methods, properties, operators, events and constructors, but cannot be used with indexers, destructors, or types."
With best regards,
Andrew
|
|
|
|
|
A static class can't create an object
and thereby it can't have a construcor.
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
Thats wrong. In .Net static constructors are allowed which are called the first time the class is used:
public class Blubb() {
static Blubb() {
}
}
Note that no more modifiers are allowed and that this constructor cannot be called explicitely (the framwork handles this).
|
|
|
|
|
OK thanks.
I didn't know that.
I'll maby use it someday.
The PROgrammer Niklas Ulvinge aka IDK
|
|
|
|
|
Consider:
public abstract sealed class Tools
{
private Tools(){}
}
The static modifier in c#2.0 is implemented this way.
|
|
|
|