How can I get the following functionatilty in Windows Forms ?

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have a useful framework, written in a different language (PowerBuilder),
which I'd like to replicate in .Net and Forms, but I'm unsure of how to
approach it, as the Event model is being used different between the
development environments.

Currently we have data entry screens, whose columns have been "wired" into a
class that performs checks on the entered data. As the user "leaves" a
column, the specific check / business rule is carried out. A lot of the
checks are common across all the screens and linking the column to the
specific method to be called is as easy a giving the column the appropriate
Name.

How can I create my own framework which would allow an easy method of
connecting / wiring the columns and the method checks together. I was
planning on using DataGrids, but can change that if I need to.
 
Hi Al,
I am not sure how complex your business rules are but you can use a
datagrid.
Build a Class that overrides methods of the DataGridTextBoxColumn

Example below was a test to see what I could do and needs to be built into a
more generic class where the style is passed to it as a parameter but it
makes the column readonly depending on the value in another column as well
as converting the displayed data into upper case.

I am not an expert and find this stuff fiddly and time consuming but it can
be done.

Public Class DacDGTextColLotNo

Inherits DataGridTextBoxColumn

Public Sub New()

MyBase.New()

Me.MappingName = MappingName

Me.Format = Format

Me.Alignment = Alignment

Me.Width = Width

Me.ReadOnly = [ReadOnly]

Me.HeaderText = HeaderText

Me.NullText = NullText

End Sub

Protected Overrides Function GetColumnValueAtRow _

(ByVal source As System.Windows.Forms.CurrencyManager, _

ByVal rowNum As Integer) As Object

Dim s As Object

Dim drv As DataRowView = CType([source].Current, DataRowView)

s = MyBase.GetColumnValueAtRow([source], rowNum)

If SetStyle = 1 Then

s = UCase(s)

'Set to Read Only if Column "LotFlg" (Commodity Flag) <> 2

Dim fReadOnly As Boolean

Try

fReadOnly = drv("LotFlg").ToString <> "2"

Catch

fReadOnly = True

End Try

Me.ReadOnly = fReadOnly

End If

Return s

End Function

Protected Overrides Sub SetColumnValueAtRow( _

ByVal source As System.Windows.Forms.CurrencyManager, _

ByVal rowNum As Integer, ByVal value As Object)

Value = UCase(value)

MyBase.SetColumnValueAtRow([source], rowNum, NValue)

End Sub

End Class
 
Al,

In my opinion is for that the validate event from every control.

As I understand your problem well, just by instancing it from a class and
let it go.
(typed in this message, watch typos)

\\\
Rules myRules = new Rules();
string ruleResult = myRules.MaxAmount((double) textBox1.text);
///
\\\
dim myRules as New Rules
dim ruleResult as String = myRules.MaxAmount(CDbl(textBox1.text))
///

I hope this helps,

Cor
 
Back
Top